【发布时间】:2018-01-08 17:50:36
【问题描述】:
我正在使用Vert.X 框架和Gradle 构建工具开发一个项目。我遇到的问题是IntelliJ 中的断点根本无法以我尝试过的任何方式工作。
这是我在 Gradle 中使用的 Vert.X 的运行配置:
run {
args = [
'run', mainVerticleName,
"-conf", confPath,
"--redeploy=$project.ext.watchForChange",
"--launcher-class=$mainClassName",
"--on-redeploy=$project.ext.doOnChange"
]
}
所以部署是使用Gradle 完成的,运行没有任何问题,IntelliJ 调试器已连接,但断点不起作用。
我尝试过的方法:
1) Gradle 运行配置。这是Intellij IDEA 的运行配置:
尝试使用远程调试工具,使用以下 VM 选项启动应用程序:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
但这没有用。
在这种情况下,我无法启动项目,因为我在启动时收到以下消息:
Error: Could not find or load main class io.vertx.core.Launcher
Vert.X Core 库在类路径中,配置似乎正确,所以无法获取是问题所在。
项目源码公开,可在GitHub:
vertx-gradle-architecture-starter
Vert.X 版本 - 3.4.0。 Gradle 版本 - 3.4.1。 IntelliJ IDEA 版本 - 2016.3.5。操作系统 - MacOS Sierra 10.12.3。
有趣的事实是当我从测试中部署Vert.X 时——断点工作。 任何想法为什么断点在我上面描述的情况下不起作用?
【问题讨论】:
-
至少你的第二个选项应该可以工作!您使用的是哪个版本的 vert.x?也许是旧版本没有
io.vertx.core.Launcher? -
它是
io.vertx.core.Launcher,您可以在屏幕截图中看到。我在启动此配置时收到消息Error: Could not find or load main class io.vertx.core.Launcher,因此无法对调试器进行事件检查。我的依赖项中有vertx-core。 -
抱歉,我没有看到您指定您使用的是 3.4.0。我得到了你的 GitHub 项目,并在本地尝试了屏幕截图中的配置。有用!尝试在 Intellij 中清理/重建项目。
-
应用程序配置 - 2. 和你的截图一模一样。 see screenshot。我没有其他提示,抱歉:-(
-
它不起作用,因为启动了 2 个 JVM,一个带有启动器的启动器使用调试选项启动,然后它使用应用程序代码生成另一个 JVM,它没有在调试模式下运行,调试器是连接到没有与断点对应的代码的第一个 VM,因为它在第二个 VM 中运行。检查您的进程树。应该有一种方法可以为生成的 VM 指定 VM 选项(通过
args),然后您就可以对其使用远程调试。
标签: java debugging intellij-idea gradle vert.x