#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. Можете ли вы отладить его сейчас?