【发布时间】:2020-07-07 15:31:14
【问题描述】:
我正在尝试使用 Maven 和 Eclipse 进行远程调试。在远程机器上,我执行mvnDebug spring-boot:run,在 Eclipse 中的本地机器上,我设置了 Remote Java Application 调试配置,并使用适当的主机 IP 和端口以及连接类型为 Standard (Socket Attach).
在远程机器上,在尝试连接 Eclipse 之前,我只看到:
Preparing to execute Maven in debug mode
Listening for transport dt_socket at address: 8000
ss -aln 显示在端口 8000 上侦听的内容:users:(("java",pid=949917,fd=4))。只要我在本地机器上的 Eclipse 中启动调试过程,常规的 Maven 输出就会出现在远程机器上:
Apache Maven 3.6.3 (NON-CANONICAL_2019-11-27T20:26:29Z_root)
Maven home: /opt/maven
Java version: 1.8.0_242, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-8-openjdk/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.5.8-arch1-1", arch: "amd64", family: "unix"
[INFO] Scanning for projects...
...
显然建立了联系。 Maven 的输出与常规运行相同。但是 Eclipse 显示 Failed to connect to remote VM. Connection refused. 没有其他信息,现在远程机器上的 8000 端口上没有任何东西在监听。
我什至不知道如何调试它,而且配置再简单不过了。
mvnDebug 脚本的内容是:
MAVEN_DEBUG_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"
echo Preparing to execute Maven in debug mode
env MAVEN_OPTS="$MAVEN_OPTS" MAVEN_DEBUG_OPTS="$MAVEN_DEBUG_OPTS" "`dirname "$0"`/mvn" "$@"
任何建议或见解将不胜感激。
【问题讨论】:
-
我认为你的问题是
springboot:run分叉进程,就像 maven surefire 所做的那样:docs.spring.io/spring-boot/docs/current/maven-plugin/examples/… 我的猜测是,与 surefire 不同,springboot:run让 maven 完成。这可以解释为什么您无法与 Eclipse 连接。mvnDebug主要用于调试maven和插件,而不是你自己的应用程序。 -
好吧,我似乎什么也没做,但显然我现在可以连接了。我猜是Eclipse SNAFU。没有
connection refused错误,Debug视图显示一个正在运行的Remote Java Application线程,但是断点好像没有效果。 -
@NoDataFound 链接中的配置解决了我的问题。如果需要,请将其粘贴到答案中。
-
是的。我创建了一个答案。
标签: java eclipse spring-boot maven remote-debugging