Intellij IDEA 调试器无法在 Gradle Vert.X 项目上运行

Intellij IDEA debugger not working on Gradle Vert.X project

我正在使用 Gradle 构建工具使用 Vert.X 框架开发一个项目。我遇到的问题是 IntelliJ 中的断点根本无法以我尝试过的任何方式工作。

这是 Vert.X 的 运行 配置,我在 Gradle:

中使用
run {
    args = [
            'run', mainVerticleName,
            "-conf", confPath,
            "--redeploy=$project.ext.watchForChange",
            "--launcher-class=$mainClassName",
            "--on-redeploy=$project.ext.doOnChange"
    ]
}

因此使用 Gradle、运行s 完成部署,没有任何问题,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 库在类路径中并且配置似乎是正确的,所以无法获取是问题所在。

项目的源代码是public,可以在GitHub:

上找到

vertx-gradle-architecture-starter

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 命令在单独的 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 模块的源集。关闭此功能后 - 应用程序调试 运行 开始工作。

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

这是一个 IntelliJ IDEA 问题 -

我遇到了完全相同的问题,以下对我有用。 redeploy、launcher 和 on-redeploy 选项在 intelliJ 中不是必需的。如果我们在应用程序启动后删除那些调试工作。

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