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_main
和 api_test
模块的源集。关闭此功能后 - 应用程序调试 运行 开始工作。
这可以在 Gradle 设置中关闭。 Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle
: 取消选中为每个源集创建单独的模块。
这是一个 IntelliJ IDEA
问题 - 。
我遇到了完全相同的问题,以下对我有用。 redeploy、launcher 和 on-redeploy 选项在 intelliJ 中不是必需的。如果我们在应用程序启动后删除那些调试工作。
run {
args = [
'run', mainVerticleName,
"-conf", confPath
]
}
我正在使用 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_main
和 api_test
模块的源集。关闭此功能后 - 应用程序调试 运行 开始工作。
这可以在 Gradle 设置中关闭。 Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle
: 取消选中为每个源集创建单独的模块。
这是一个 IntelliJ IDEA
问题 -
我遇到了完全相同的问题,以下对我有用。 redeploy、launcher 和 on-redeploy 选项在 intelliJ 中不是必需的。如果我们在应用程序启动后删除那些调试工作。
run {
args = [
'run', mainVerticleName,
"-conf", confPath
]
}