How to run an existing Scala project using VS Code and Metals?
After following the instructions in the Scala Metals VSCode Readme, use a launch configuration similar to this for the Eclipse screenshots in the question.
.vscode/launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "scala",
"name": "Debug consoleapp",
"request": "launch",
"mainClass": "consoleapp",
"buildTarget": "consoleapp",
"args": [],
"jvmOptions": ["-J-Dconfig.file=/path/to/config/file"]
}
]
}
I had trouble passing the config file for pureconfig correctly. Here's the Github issue with the correct jvmOptions
line.
pradhyo
Updated on July 15, 2022Comments
-
pradhyo almost 2 years
I am brand new to Scala and I find that Scala IDE is very slow on my machine for basic things like searching the codebase and editing code. I am used to Visual Studio Code and was very happy to find this metals extension.
I was able to "import build" and fix issues like bumping up scala version in my projects but I am not sure how to reproduce this step to set up a run configuration and actually launch our app in Scala IDE.
We have a parent folder which has a bunch of projects and a 'consoleapp' project which is the main entry point of our app - it imports the logic/routes of all other projects.
|____parent | |____consoleapp | |____project1 | |____project2
I tried
sbt run
andsbt runMain consoleapp
from within the consoleapp folder and also the parent folder but they didn't work.I am not sure what other information from our setup is relevant - happy to provide more info as needed.
Updated to add more details below:
consoleapp/build.sbt
name := "consoleapp" version := "1.0" scalaVersion := "2.12.10" packMain := Map("consoleapp" -> "consoleapp") libraryDependencies ++= Seq (...)
Output of commands I ran -
sbt run
andsbt runMain
Running from ~/scala/parent
> sbt run masterstate [0a8dab85] modified [info] Loading settings for project global-plugins from metals.sbt,build.sbt ... [info] Loading global plugins from /Users/pradhyo/.sbt/1.0/plugins [info] Loading project definition from /Users/pradhyo/scala/parent/project [info] Loading settings for project consoleapp from build.sbt ... ... Loading settings for all other projects in parent folder ... [info] Loading settings for project parent from build.sbt ... [info] Resolving key references (22435 settings) ... [info] Set current project to parent (in build file:/Users/pradhyo/scala/parent/) [error] java.lang.RuntimeException: No main class detected. [error] at scala.sys.package$.error(package.scala:30) [error] stack trace is suppressed; run last Compile / bgRun for the full output [error] (Compile / bgRun) No main class detected. [error] Total time: 1 s, completed 18-Dec-2019 1:41:25 PM
Running from ~/scala/parent
> sbt "runMain consoleapp.consoleapp" masterstate [0a8dab85] modified [info] Loading settings for project global-plugins from metals.sbt,build.sbt ... [info] Loading global plugins from /Users/pradhyo/.sbt/1.0/plugins [info] Loading project definition from /Users/pradhyo/scala/parent/project [info] Loading settings for project consoleapp from build.sbt ... ... Loading settings for all other projects in parent folder ... [info] Loading settings for project parent from build.sbt ... [info] Resolving key references (22435 settings) ... [info] Set current project to parent (in build file:/Users/pradhyo/scala/parent/) [info] running consoleapp.consoleapp [error] (run-main-0) java.lang.ClassNotFoundException: consoleapp.consoleapp [error] java.lang.ClassNotFoundException: consoleapp.consoleapp [error] at java.net.URLClassLoader.findClass(URLClassLoader.java:382) [error] stack trace is suppressed; run last Compile / bgRunMain for the full output [error] Nonzero exit code: 1 [error] (Compile / runMain) Nonzero exit code: 1 [error] Total time: 0 s, completed 18-Dec-2019 1:46:21 PM
Running from ~/scala/parent/consoleapp
> sbt run masterstate [0a8dab85] modified [info] Loading settings for project global-plugins from metals.sbt,build.sbt ... [info] Loading global plugins from /Users/pradhyo/.sbt/1.0/plugins [info] Loading project definition from /Users/pradhyo/scala/parent/consoleapp/project [info] Loading settings for project consoleapp from build.sbt ... [info] Set current project to consoleapp (in build file:/Users/pradhyo/scala/parent/consoleapp/) [error] java.lang.RuntimeException: No main class detected. [error] at scala.sys.package$.error(package.scala:30) [error] stack trace is suppressed; run last Compile / bgRun for the full output [error] (Compile / bgRun) No main class detected. [error] Total time: 0 s, completed 18-Dec-2019 1:49:26 PM
Running from ~/scala/parent/consoleapp
> sbt "runMain consoleapp" masterstate [0a8dab85] modified [info] Loading settings for project global-plugins from metals.sbt,build.sbt ... [info] Loading global plugins from /Users/pradhyo/.sbt/1.0/plugins [info] Loading project definition from /Users/pradhyo/scala/parent/consoleapp/project [info] Loading settings for project consoleapp from build.sbt ... [info] Set current project to consoleapp (in build file:/Users/pradhyo/scala/parent/consoleapp/) [info] running consoleapp [error] (run-main-0) java.lang.ClassNotFoundException: consoleapp [error] java.lang.ClassNotFoundException: consoleapp [error] at java.net.URLClassLoader.findClass(URLClassLoader.java:382) [error] stack trace is suppressed; run last Compile / bgRunMain for the full output [error] Nonzero exit code: 1 [error] (Compile / runMain) Nonzero exit code: 1 [error] Total time: 1 s, completed 18-Dec-2019 1:50:06 PM