Intellij IDEA调试器不能用于Gradle Vert.X项目
我正在开发一个使用Gradle
构建工具使用Vert.X
框架的项目。 我遇到的问题是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
但是这不起作用。
2)应用程序配置:
在这种情况下,我不能启动项目,因为我在启动时收到以下消息:
Error: Could not find or load main class io.vertx.core.Launcher
Vert.X Core
库在类路径中,配置看起来是正确的,所以不能得到是的问题。
该项目的源代码是公开的,可以在GitHub
上GitHub
:
vertx-gradle这个架构起动
Vert.X版本 – 3.4.0。 Gradle版本 – 3.4.1。 IntelliJ IDEA版本 – 2016.3.5。 OS – MacOS Sierra 10.12.3。
有趣的事实是,当我从测试部署Vert.X
– 断点工作。 任何想法为什么断点在我上面描述的情况下不起作用?
这是两个问题的解决方案。 感谢@CrazyCoder的帮助。
1) run
命令在单独的虚拟机中运行。 所以,为了使它工作,我已经为脚本添加了--java-opts
参数:
run { args = [ 'run', mainVerticleName, "-conf", confPath, "--redeploy=$project.ext.watchForChange", "--launcher-class=$mainClassName", "--on-redeploy=$project.ext.doOnChange", // used for attaching remote debugger "--java-opts", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000" ] }
这允许在端口8000
上连接Remote debug
配置。
2)默认情况下, Intellij IDEA
为每个源集创建单独的模块,所以我有源集api_main
和api_test
模块。 关闭此功能后 – 应用程序调试运行开始工作。
这可以在Gradle Settings中关闭。 Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle
:取消选中每个源集创建单独的模块。
这是一个IntelliJ IDEA
问题 – 参考 。