关于java:从Scala源代码组装的远程调试JAR

Remote debug JAR assembled from Scala source code

我正在使用一个用 Scala 编写的 API,它使用 SBT 将其构建到 JAR 文件中。我将 JAR 文件部署到虚拟机 (VM) 并且可以成功执行它 - API 启动并处理请求。

现在我正在尝试使用 IntelliJ (v 2016.3.4) 远程调试配置在源 Scala 代码中放置断点。这是我所做的:

1) 在 IntelliJ 中将我的源代码作为 Scala SBT 项目打开。

2) 打开虚拟机端口 5005

3) 在 VM 上执行的 JAR:
java -noverify"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" -cp /home/vagrant/shared/build/geotrellis-chatta-demo-assembly-0.1-SNAPSHOT.jar geotrellis.chatta.Main

我得到这个输出:
Listening for transport dt_socket at address: 5005

4) 在 IntelliJ 中添加远程调试配置并启动它。 IntelliJ 控制台向我展示了这一点:
Connected to the target VM, address: 'localhost:5005', transport: 'socket'

但是,我的断点都不起作用。

我在上述步骤中遗漏了什么吗?我对 Scala 非常陌生,多年来没有认真使用过 Java,并且刚刚开始使用 IntelliJ。

更新:IntelliJ 调试器肯定在工作 - 如果我暂停它,API 会停止响应请求,直到它不再暂停。但没有停止断点。


您是否为正在调试的 JAR 指定了源代码附件?在 IntelliJ 中,找到 JAR 并将其与源代码相关联。