Intellij IDEA调试器无法处理Gradle Vert.X项目

时间:2017-03-10 10:48:15

标签: java debugging intellij-idea gradle vert.x

我正在使用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)Gradle运行配置。以下是Intellij IDEA的运行配置: Intellij Run Configuration using Gradle

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

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

但这没有用。

2)应用程序配置: IntelliJ Run Configuration using Application

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

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

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

项目的源代码是公开的,可以在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时 - 断点有效。 关于断点在上述情况下无法解决的任何想法

2 个答案:

答案 0 :(得分:5)

以下是这两个问题的解决方案。感谢@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"
    ]
}

这允许在端口Remote debug上附加8000配置。

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

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

enter image description here

这是IntelliJ IDEA问题 - reference

答案 1 :(得分:2)

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

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