java - Maven和Eclipse远程调试: connection refused

标签 java eclipse spring-boot maven remote-debugging

我正在尝试使用 Maven 和 Eclipse 进行远程调试。在远程计算机上,我执行 mvnDebug spring-boot:run,并在 Eclipse 中的本地计算机上,使用适当的主机 IP 设置远程 Java 应用程序 调试配置端口和连接类型为标准(套接字连接)

在远程计算机上,在尝试连接 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 显示无法连接到远程虚拟机。连接被拒绝。没有任何附加信息,到目前为止,远程计算机上的端口 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" "$@"

如有任何建议或见解,我们将不胜感激。

最佳答案

就像使用 forked test 的 maven-surefire-plugin 一样,springboot 似乎 fork 了一个新的 jvm 进程。因此,在这种情况下,mvnDebug 不会帮助您:要从 Maven 调试您的 springboot 实例,您必须根据此 link 设置适当的 jvmArguments :

  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.2.6.RELEASE</version>
    <configuration>
      <jvmArguments>
        -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
      </jvmArguments>
    </configuration>
    ...
  </plugin>

虽然我无法解释为什么无法使用远程调试进行连接,但我的提示是 Spring Boot 让 maven 终止。我没有测试,但这可以解释为什么你无法连接 Eclipse。

请注意,mvnDebug主要用于调试maven和插件,而不是您自己的应用程序。

关于java - Maven和Eclipse远程调试: connection refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60876758/

相关文章:

java - 如何获取文本并响应 JFormattedTextField 上的输入按下

java - 在日志上看不到 cucumber 片段

spring-boot - EnversRevisionRepositoryFactoryBean 不为 JPARepositories 创建 bean

java - spring boot 应用程序在进行单元测试时是否需要连接数据库

java - 从bash脚本中获取JVM执行状态

java - Apache FTP 服务器 : MVN Build Failed on Java 8 (SSL)

java - 在实时系统中控制 Java 垃圾回收

java - 如何解决java.sql.SQLException : No suitable driver found for jdbc:derby:

java - Eclipse - 如何在整个项目中出现 "Change package declaration to ...."

java - 在 Eclipse Luna 调试器中请求参数值