“java.net.BindException: Address 已在使用中”错误的解决方案?

2022-09-02 01:38:28

我正在使用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

这奏效了,但每次我打开Intellij时,我都必须这样做。如果我想在不退出 Intellij 的情况下重新运行服务器,我不能,因为我会收到此错误。有谁知道一个永久性的修复,而不仅仅是每次手动杀死它?


答案 1

这是由于监视 Tomcat 实例。Tomcat将在端口9999上运行,因此当JMX想要开始检查关闭时,它无法绑定到此端口。JMX

解决此问题的一种方法是定义环境变量。CATALINA_OPTS

在 中设置这些属性会在启动 tomcat 时尝试启动 jmx 服务器,并在关闭 tomcat 时启动 jmx 服务器。因此,端口已在使用异常。您需要设置 这些属性,而不是 。这只会在你启动tomcat时运行。JAVA_OPTSCATALINA_OPTSJAVA_OPTS

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停止服务器后单击骷髅图标以杀死所有相关进程。这应该有助于解决端口问题。


推荐