Подтвердить что ты не робот

Решение проблемы с "java.net.BindException: Address is in use"?

Я использую Intellij, пытаясь развернуть приложение Tomcat, но всякий раз, когда я пытаюсь запустить его, я получаю следующую ошибку:

Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 1098; nested exception is: 
java.net.BindException: Address already in use

Теперь я вручную искал процесс, происходящий в этом порту, с помощью:

lsof -i:1098

И я нашел java-процесс и убил его тоже:

ps aux | grep java

kill -9 20386

И это сработало, но я должен сделать это EVERYTIME. Я открываю Intellij. Если я хочу повторно запустить сервер, не выходя из Intellij, я не могу, потому что я получу эту ошибку. Кто-нибудь знает о постоянном исправлении для этого, а не просто вручную убивает его каждый раз?

4b9b3361

Ответ 1

Это связано с тем, что JMX контролирует экземпляр Tomcat. Tomcat будет работать на порте 9999, поэтому, когда JMX хочет начать проверять завершение работы, он не может привязываться к этому порту.

Один из способов исправить это - определить переменную среды CATALINA_OPTS.

Настройка этих свойств в JAVA_OPTS пытается запустить jmx-сервер при запуске tomcat И когда вы завершаете tomcat. Следовательно, порт уже используется исключение. Вам необходимо установить эти свойства для CATALINA_OPTS вместо JAVA_OPTS. Это будет работать только при запуске tomcat.

CATALINA_OPTS = "$ CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port = 8999" CATALINA_OPTS = "$ CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.authenticate = false"

Что это исправляет для меня в $HOME/.bashrc Я добавляю этот экспорт:

export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999"

Кредит: https://bowerstudios.com/node/636

Ответ 2

enter image description here Нажмите на значок черепа после остановки сервера, чтобы убить все связанные процессы. Это должно помочь в решении проблемы с портом.

Ответ 3

Я столкнулся с этой проблемой, я не убил мое предыдущее приложение на том же порту. Я просто убил его, используя kill -9 PID, и я был в порядке.