Невозможно открыть порт отладчика в IntellJ IDEA
У меня проблема с тем, что я не могу настроить приложение в режиме отладки с помощью IntellJ IDE, но режим запуска в порядке.
Моя ОС - Windows 7, IDE - IntellJ IDEA, веб-контейнер - Tomcat 6. Я долго пытался изменить порт HTTP и порт JMX, но он не работал.
Когда я настроил приложение в режиме отладки с IntellJ, оно не удалось, и журнал событий:
16:05:35 Ошибка при запуске tomcat: невозможно открыть порт отладчика: java.net.BindException "Адрес уже используется: JVM_Bind".
Любая помощь будет оценена.
32 ответа
Ключ к проблеме находится в порту отладчика. У меня была та же проблема, я убивал каждый процесс, прослушивающий порт 8081 (мой http-порт), 1099 (порт JMX), порт выключения tomcat, каждый java.exe и все еще ничего.
Дело в том, что этот порт отладчика отличается. Если вы запустите приложение, оно будет проходить через порт, для которого настроен Tomcat, 8080, 8081 или любой другой. Но если вы запускаете его в режиме отладки, он проходит через другой порт.
Если вы собираетесь редактировать конфигурацию Tomcat из IntelliJ, последняя вкладка - " Запуск / подключение". Здесь вы увидите конфигурацию для режима отладки, и вы увидите его порт. У меня был 50473. Я поменял его на 50472, и все снова заработало.
Если у вас Windows, вы можете полностью обойти проблему с сокетом, переключившись на отладку совместно используемой памяти.
Для меня IntelliJ Event Log
(правый нижний угол) имел ниже журналы:
Error running EntitmentTooling-Debug: Cannot run program "/path-to/apache-tomcat-8.5.15/bin/catalina.sh" (in directory "path-to/apache-tomcat-8.5.15/bin"): error=13, Permission denied
Error running EntitmentTooling-Debug: Unable to open debugger port (127.0.0.1:58804): java.net.SocketException "Socket closed"
Команда
$ chmod a+x /path-to/apache-tomcat-8.5.15/bin/catalina.sh
чтобы достаточно изменить привилегии работали на меня.
Я столкнулся с той же ошибкой при использовании IntelliJ. Поскольку я запустил несколько экземпляров IntelliJ. При запуске двух экземпляров запустился нормально. Однако при запуске другого он выдавал ошибку ниже.
unable to open debugger port (127.0.0.1:debug-port-number) java.net.socketexception interrupted function call accept failed
В основном есть два места, где вы можете проверить свои порты, связанные с отладкой в IntelliJ.
Что проверять: если IntelliJ выдает ошибку выше, значит проблема связана с любым из перечисленных выше портов. Чтобы проверить этот открытый журнал событий (он доступен в правом углу внизу) и проверить точное сообщение. В журнале событий будет сообщение, как показано ниже
11:19 PM Error running 'Tomcat-tp': Address localhost:1098 is already in use
11:19 PM Error running 'Tomcat-tp': Unable to open debugger port (127.0.0.1:51787): java.net.SocketException "Interrupted function call: accept failed"
Решение-1 Проверьте порт JMX текущего intelliJ, который не начинается с рабочего, и убедитесь, что порты JMX не дублируются в экземпляре IntelliJ или какое-либо программное обеспечение, работающее на вашем компьютере, не использует этот порт.
Решение-2. Если JMX не дублируется, проверьте порт отладки, проверьте все экземпляры IntelliJ и внесите изменения.
Конечно, у порта JMX или Debug есть проблема, просто используйте уникальный порт JMX и Debug, и он будет работать.
Надеюсь, это кому-то поможет.
Это работает для меня последовательно (это случается со мной время от времени, когда я делаю такие вещи, как перезагрузка tomcat, например, когда я запускаю интеграционные тесты)
1) Найдите процесс, у которого открыт порт 1099
sudo netstat -anp | grep tcp | grep 1099
cp6 0 0 :::1099 :::* LISTEN 9857/java
2) убей его
kill 9857
3) Запустите Tomcat.
У меня была та же проблема в Windows 7 и IntellijIdea 14. Я убил процессы Java, нажав CTRL+ALT+ESc, нашел Java и убил его. Теперь перезапустите, приложение снова должно быть в порядке.. Вы также можете сделать это с помощью командной строки или оболочки (Linux), но я нашел это проще для себя
Я решил проблему таким способом.
- Я пытался убить все процессы java.exe, но это было бесполезно.
- Затем я попытался удалить сервер Tomcat
- Я повторно развернул проект и перезапустил проект, и он работал.
Смотрите эти ссылки для получения дополнительной информации:
Удалить Tomcat
Добавить новый Tomcat
У меня было это точное сообщение.
Причина была в том, что некоторые IDE (я использую Eclipse и Intellij) не смогли завершить работу сервера tomcat. Или, может быть, разбился, прежде чем он мог сделать это.
Решением было перейти к C:\...\apache-tomcat-xxx\bin
и беги shutdown
,
Все остальные решения, к сожалению, не сработали. Это то, что сработало для меня. Я просто изменил порт отладчика на другой номер порта.
Intelij-> Предпочтения-> Сборка, выполнение, развертывание -> Отладчик-> Встроенный сервер-> Порт (изменить значение)
Иногда случается так, что когда я перезагружаю свой компьютер, все в порядке. Возможно, существует конфликт портов.
Перезагрузка компьютера работает, потому что экземпляры Java или Tomcat убиваются при перезагрузке. Вы также можете рассмотреть возможность уничтожения определенных процессов из диспетчера задач.
Это также происходит, если есть проблема в файле context.xml. В моем случае я случайно изменил значение контекста.
Для этого есть разные причины.
- Может быть проблема с портом отладчика --- Пожалуйста, измените его, чтобы решить (ответил T.M.)
- Может быть какая-то проблема с intellij кешем - Недействительный кеш и перезапуск решит ее (ответил feng smith)
- Могут быть проблемы с любым другим портом, таким как JMX, AJP --- Пожалуйста, измените также эти номера портов.
Я хотел бы добавить это как комментарий, но недостаточно реп
Во время отладки я получил эту проблему: он работал с
- попытался изменить мой порт Tomcat http 8082 на 8083(также в конфигурациях отладки на IntelliJ и Tomcat->conf->server.xml)
- попытался изменить порт JMX с 1099 на 1009.
- попытался изменить порт отладки в Startup/Connection в конфигурации отладки
- убил все процессы Java в TaskManager-> Процессы.
У меня та же проблема, потому что DNS моего компьютера пропускает 127.0.0.1 localhost. Когда я добавляю 127.0.0.1 localhost в мой файл хоста, все становится нормально.
Мое предположение, что это исключение обычно возникает, когда Tomcat неправильно закрыт и все еще удерживает порты. Обычно достаточно убить любой процесс, слушающий порт 1099. Для окна 10:
netstat -aon | find "1099"
taskkill /F /PID $processId
Ни один из вышеперечисленных методов не работал в моем случае: изменение номера порта в конфигурации запуска, перезагрузка компьютера, аннулирование кэша в IntelliJ, процесс уничтожения, показанный в netstat (nestat -anob | findstr <port-number>
а потом tskill <pid>
). Единственное, что в итоге помогло, это запуск и выключение tomcat вручную через startup.bat
а также shutdown.bat
(вы должны использовать переписку .sh
файлы на linux и macOS).
На вкладке Сервер конфигурации Tomcat в IntelliJ измените порт JMX на другой номер.
Единственное, что сработало для меня, - это зайти в диспетчер задач в Windows и завершить все процессы Java, которые выполняются, щелкнув правой кнопкой мыши -> завершить задачу.
- Проверьте конфигурацию "Выполнить", чтобы увидеть, какой порт он использует (
8081
). - Найти все другие процессы, использующие этот порт
lsof -t -i :8081
- Убейте процессы в этом порту.
kill PROCESS_ID
- Запустите Tomcat в режиме отладки.
В моем случае я потратил столько времени на изменение порта отладчика, но это не было проблемой. Поскольку tomcat не смог запустить порт, который я выбрал в конфигурации " Выполнить", я не смог отладить свой сервис.
Я пришел в этот сценарий, и, как и в приведенных выше ответах, я попытался изменить порт, например Edit Configuration -> Startup/Connection -> debug -> change the Port, но это не решило мою проблему, потому что я запускал свое приложение в режиме отладки, поэтому один раз попробуйте запустить приложение в обычном режиме без отладки. это решило мою проблему!
В моем случае у меня был еще один проект, открытый в IntelliJ, и Tomcat работал в этом проекте в режиме отладки. Остановка этого экземпляра Tomcat решила проблему.
Иногда эта проблема возникает просто из-за неправильной конфигурации.
Пожалуйста, проверьте, есть ли у вас, например, номер порта SSL, определенный в вашей конфигурации запуска. Если это так, и если у вас нет правильной конфигурации для него в tomcat server.xml, тогда будет невозможно правильно запустить сеанс отладки, и, к сожалению, у вас будет такая же ошибка. Думаю, это можно показать как другую ошибку. Так что, на мой взгляд, это тоже проблема ...
Решение состоит в том, чтобы удалить значение номера порта SSL из конфигурации запуска IDE.
#intellij-ideahttps://stackoverflow.com/questions/tagged/intellij-idea
Просто перезапустите студию Android, прежде чем попробовать все это. Я сталкиваюсь с тем же прямо сейчас, и я исправляю это таким образом.
Удачного кодирования:)
В моем случае была проблема в файле server.xml для папки Tomcat/conf, где у меня были дополнительные теги комментариев под другим тегом комментария. Поэтому я думаю, что из-за какой-то проблемы в server.xml он не смог запустить Tomcat. Кроме того, он копирует папку tomcat из установочного каталога в C:\Users\username.IntelliJIdea2017.2\system\tomcat\Tomcat_service
Вероятно, вы получите такое же сообщение об ошибке, если не удается найти файл standalone.xml в автономной папке / папке конфигурации. По крайней мере, у меня такая же ошибка при использовании WildFly 14.0.1:
Для всех, кто приходит сюда с похожим сообщением:
Unable to open debugger port (127.0.0.1:50470):
java.net.SocketException "Interrupted function call: accept failed"
Это может быть вызвано чем-то совершенно независимым, т.е. это не конфигурация порта. Например, если вы используете Tomcat, возможно, у вас недопустимыйweb.xml
. Проверьте журнал событий на наличие предыдущих ошибок:
Cannot load C:\...\conf\web.xml: ParseError at [row,col]:[480,29]
Message: The element type "param-value" must be terminated by the matching end-tag "</param-value>".
Это происходит, когда у вас есть приложение, работающее с тем же номером порта. Один из способов сделать это - принудительно убить процесс. Откройте командную строку как администратор. Запустите команду 'taskkill /IM "java.exe" /F'. Это работало для меня в Windows. Дайте мне знать, если это работает.
Это пришло мне в голову, когда я запускал wildfly на intellij и переключал ветку. Я остановил wildfly, построил банку с помощью maven, попытался повторно запустить Wildfly и получил ошибку.
Я попытался изменить порт, как указано в принятом ответе, но не сработало. Я попытался найти процесс, работающий на порту, но команда netstat его не нашла.
Пробовал перезагружать ОС, тоже не помогло.
Затем я проверил папку конфигурации моей установки Wildfly, вот тогда я понял
standalone.xml был заменен на standalone.xml.tmp
переименование его в standalone.xml помогло мне устранить ошибку.