Java Intellij IDEA调试器不适用于Gradle Vert.X项目
我正在使用Java Intellij IDEA调试器不适用于Gradle Vert.X项目,java,debugging,intellij-idea,gradle,vert.x,Java,Debugging,Intellij Idea,Gradle,Vert.x,我正在使用Vert.X框架和Gradle构建工具开发一个项目。我遇到的问题是,IntelliJ中的断点根本无法以我尝试过的任何方式工作 下面是我在Gradle中使用的Vert.X的运行配置: run { args = [ 'run', mainVerticleName, "-conf", confPath, "--redeploy=$project.ext.watchForChange", "
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) 渐变运行配置。以下是Intellij IDEA的运行配置:
试图使用远程调试工具,已使用以下VM选项启动应用程序:
-agentlib:jdwp=transport=dt\u socket,server=y,suspend=n,address=8000
但这不起作用
2) 应用程序配置:
在这种情况下,我无法启动项目,因为我在启动时收到以下消息:
错误:无法找到或加载主类io.vertx.core.Launcher
Vert.X Core
库位于类路径中,配置似乎正确,因此无法获取WARE是问题所在
该项目的源代码是公开的,可以在GitHub
上找到:
Vert.X版本-3.4.0。渐变版本-3.4.1。IntelliJ IDEA版本-2016.3.5。操作系统-MacOS Sierra 10.12.3
有趣的事实是,当我从测试中部署
Vert.X
时,断点起作用你知道为什么断点在我上面描述的情况下不起作用吗?以下是这两个问题的解决方案。感谢@CrazyCoder在这方面的帮助
1) run
命令在单独的VM中运行。因此,为了使其正常工作,我在脚本中添加了--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
上附加远程调试
配置
2) 默认情况下,intellijidea
为每个源代码集创建单独的模块,因此我为api\u main
和api\u test
模块创建了源代码集。关闭此功能后,应用程序调试运行开始工作
这可以在渐变设置中关闭<代码>首选项->构建、执行、部署->构建工具->渐变:取消选中为每个源集创建单独的模块
这是一个
IntelliJ IDEA
问题-。我有完全相同的问题,下面的问题对我有效。intelliJ中不需要重新部署、启动和重新部署选项。如果我们删除这些,调试将在应用程序启动后工作
run {
args = [
'run', mainVerticleName,
"-conf", confPath
]
}
至少你的第二个选择肯定会奏效!您使用的是哪一版本的vert.x?也许它是一个旧版本,没有
io.vertx.core.Launcher
?正如您在屏幕截图中看到的那样,它是io.vertx.core.Launcher
。我收到消息错误:在启动此配置时无法找到或加载主类io.vertx.core.Launcher
,因此无法对调试器进行事件检查。我的依赖项中有vertxcore
。抱歉,我没有看到您指定使用3.4.0。我得到了你的GitHub项目,并在本地尝试了屏幕截图中的配置。它起作用了!尝试在Intellij.Application configuration-2中清理/重建项目。这和你的截图一模一样。我没有其他提示,对不起:-(这不起作用,因为有两个JVM已启动,其中一个启动程序的JVM使用调试选项启动,然后它生成另一个JVM,其中包含应用程序代码,并且未在调试模式下运行。调试器连接到第一个VM,其中没有与断点对应的代码,因为它在第二个VM中运行。请检查进程树。应该有一种方法为生成的VM指定VM选项(通过args
),然后您将能够对其使用远程调试。如果没有“为每个源根创建单独的模块”,并且当有多个src/main(例如src/integrationTest)时,您将出现错误-IntelliJ将不知道该模块的配置(类路径等)