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的运行配置: Intellij使用Gradle运行配置

尝试使用远程调试工具,启动具有以下VM选项的应用程序:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

但这没效果。

2)应用程序配置: IntelliJ使用Application运行配置

在这种情况下,我无法启动项目,因为我在启动时收到以下消息:

Error: Could not find or load main class io.vertx.core.Launcher

Vert.X Core库在类路径和配置似乎是正确的,所以无法得到的是问题。

该项目的源代码是公开的,可以在GitHubGitHub

vertx-gradle这个架构起动

Vert.X版本 – 3.4.0。 Gradle版本 – 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上附加Remote debug配置。

2)默认情况下, Intellij IDEA为每个源集创建单独的模块,因此我有api_mainapi_test模块的源集。 关闭此function后 – 应用程序调试运行开始起作用。

可以在Gradle设置中关闭此function。 Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle :取消选中每个源集创建单独的模块。

在此处输入图像描述

这是IntelliJ IDEA问题 – 参考 。

我有完全相同的问题,后面为我工作。 在intelliJ中不需要重新部署,启动和重新部署选项。 如果我们在应用程序启动后删除那些调试工作。

 run { args = [ 'run', mainVerticleName, "-conf", confPath ] }