1

TL;DR:通过 JDI 启动 Scala 程序的洁净方式是什么?

我想使用JDI为 Scala 实现一个调试器。特别是我想使用LaunchingConnector。理想情况下,我希望用户指定我应该启动 Scala 2.11 还是 2.12。

我在我的系统上安装了 Scala 2.11,通过运行 Scala shell 并查看我的进程表,我可以确定以下 JVM 命令行选项足以完成工作:

environment.get("options").setValue("-Xmx256M -Xms32M -classpath /usr/share/scala-2.11/lib/hawtjni-runtime.jar:/usr/share/scala-2.11/lib/jansi.jar:/usr/share/scala-2.11/lib/jline.jar:/usr/share/scala-2.11/lib/scala-actors.jar:/usr/share/scala-2.11/lib/scala-compiler.jar:/usr/share/scala-2.11/lib/scala-library.jar:/usr/share/scala-2.11/lib/scala-parser-combinators.jar:/usr/share/scala-2.11/lib/scala-reflect.jar:/usr/share/scala-2.11/lib/scala-xml.jar:/usr/share/scala-2.11/lib/scalap.jar:scalacheck_2.11-1.14.1.jar:target/scala-2.11/classes/ -Dscala.home=/usr/share/scala-2.11 -Dscala.usejavacp=true -Denv.emacs=")

对于上下文,这与environment.get("main").setValue("scala.tools.nsc.MainGenericRunner <my program> <arguments to my program>")where (实际上但不是字面意思)结合使用val environment = com.sun.jdi.Bootstrap.virtualMachineManager().defaultConnector().defaultArguments()

以上都是必要的吗?

有什么方法可以使用 JDI 框架启动一个工作的 Scala 进程,而无需对上述路径进行硬编码?有没有办法可以找出用于 Scala 2.12 的路径?

请注意,我的类路径还包括scalacheck我手动下载的 jar 文件。我可以以编程方式确定 sbt 将库文件下载到哪里吗?我也可以计算类路径的那部分吗?

4

0 回答 0