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将不知道该模块的配置(类路径等)