Удаленная отладка Maven & Eclipse: соединение отказано - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь сделать удаленную отладку с Maven и Eclipse. На удаленном компьютере я делаю mvnDebug spring-boot:run, а на локальном компьютере в Eclipse я настроил конфигурацию отладки Remote Java Application с соответствующим IP-адресом хоста и портом и типом соединения как Стандартный (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" "$@"

Будем благодарны за любые предложения или идеи.

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Как и maven-surefire-plugin с разветвленным тестом, похоже, что springboot запускается в новом процессе jvm. Следовательно, mvnDebug не поможет вам в этом случае: чтобы отладить экземпляр Springboot из Maven, вы должны настроить подходящие 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 и плагинов, а не для вашего собственного приложения.

0 голосов
/ 27 марта 2020

Конфигурация запуска, которую вы попробовали, предназначена для java 4 и ниже.

для java 5 и выше, попробуйте использовать для MAVEN_OPTS:

-agentlib: jdwp = transport = dt_socket сервер = у, подвесьте = у, адрес = 8000

...