" java.net.BindException的解决方案:已在使用的地址"错误?

时间:2014-06-06 19:03:05

标签: java tomcat intellij-idea

我正在使用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的情况下重新运行服务器,我不能,因为我会收到此错误。有没有人知道对此的永久修复,而不是每次都手动杀死它?

4 个答案:

答案 0 :(得分:13)

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

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

在JAVA_OPTS中设置这些属性会在启动tomcat和关闭tomcat时尝试启动jmx服务器。因此端口已经在使用异常。您需要为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

答案 1 :(得分:1)

enter image description here停止服务器后,单击头骨图标以终止所有关联的进程。这应该有助于解决端口问题。

答案 2 :(得分:0)

我在Tomcat中多次发现了这个问题。

错误:代理抛出异常:java.rmi.server.ExportException:端口已在使用中:912 3;嵌套的异常是:java.net.BindException:地址已在使用中

在tomcat中 [cc @ Cdf bin] $ vim catalina.sh 将9123更改为无效数字,例如8998。 接着 , [cc @ Cdf bin] $ ./start.sh;tailf ../ logs / catalina.out

答案 3 :(得分:-2)

我遇到了这个问题,我没有在同一个端口上杀死我之前运行的应用程序。我刚用kill -9 PID杀了它,我很好。