Gradle: ошибка при запуске ‘Debug Elasticsearch’: не удалось открыть порт отладчика java.io.IOException «сбой рукопожатия — нераспознанное сообщение от целевой виртуальной машины»

#java #elasticsearch #gradle #intellij-idea

#java #elasticsearch #gradle #intellij-idea

Вопрос:

Я пытаюсь выяснить, как Elasticsearch обрабатывает свои запросы и запускает их в IntelliJ. Согласно документации по вкладу в Gitlab, похоже, не существует каких-либо конкретных настроек для использования IntelliJ.

Конфигурация отладки по умолчанию выглядит следующим образом:

 -agentlib:jdwp=transport=dt_socket,server=n,address=innb01811-linux.v2c2.at:5005,suspend=y,onthrow=<FQ exception class name>,onuncaught=<y/n>
 

И это нормально, пока я не отправлю запрос по умолчанию из командной строки:

 curl -X GET http://localhost:5005
 

В этот момент все терпит неудачу:

 curl: (56) Recv failure: Connection reset by peer
JDWP-Handshake
 

И IDE возвращает ошибку:

 17:32   Error running 'Debug Elasticsearch': Unable to open debugger port (localhost:5005): java.io.IOException "handshake failed - unrecognized message from target VM"
 

Я уже открыл порт (ufw разрешает 9200 / tcp), попробовал с 80, 8080, 8081 и 9200.

Я не могу выбрать опцию «Подключиться к удаленной виртуальной машине» — тогда ошибка

 Error running 'Debug Elasticsearch': Unable to open debugger port (localhost:5005): java.net.ConnectException "Connection refused (Connection refused)" 
 

произойдет.

Я могу запустить проект с настройкой «gradle» по умолчанию:

 =======================================
Elasticsearch Build Hamster says Hello!
  Gradle Version        : 6.6.1
  OS Info               : Linux 4.15.0-123-generic (amd64)
  JDK Version           : 11 (JDK)
  JAVA_HOME             : /usr/lib/jvm/java-11-openjdk-amd64
  Random Testing Seed   : B1C1136A696158BD
  In FIPS 140 mode      : false
=======================================
 

Есть идеи, что еще нужно сделать или почему все выходит из строя после отправки простого запроса? Существуют ли какие-либо другие параметры отладки, которые необходимо выбрать?

Честно говоря, я не знаю, какой сервер использует IntelliJ или Elasticsearch. Может ли это быть проблемой?

Комментарии:

1. Какая полная java командная строка используется для запуска процесса в режиме отладки со всеми фактическими параметрами (не заполнителями, показанными в вопросе)? Вы пробовали другой номер порта? Вы запускаете процесс, который хотите отлаживать, на том же компьютере, что и IDE?

2. @CrazyCoder — как показать полную java командную строку? Обычно IDE не печатает его в терминале. Я попробовал несколько номеров портов и отметил их в исходном сообщении (80, 8080, 8081 и 9200). У меня есть только одна машина. Я сам немного озадачен, почему IntelliJ считает это «удаленной отладкой»

3. В терминале вы можете использовать команду ps с соответствующими параметрами, чтобы перечислить процессы с их полными командными строками, grep for java . Какой тип конфигурации запуска / отладки вы используете в IDE? Как запустить Elasticsearch?

4. @CrazyCoder — я запустил его вне среды IDE, просто используя ./gradlew run . Внутри IDE то же самое

5. Вы можете отключить делегирование Gradle: i.imgur.com/HpeUaUE.png . Нажмите отладка в IDE. Можете ли вы отладить его сейчас?