我正在使用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的情况下重新运行服务器,我不能,因为我会收到此错误。有没有人知道对此的永久修复,而不是每次都手动杀死它?
答案 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"
答案 1 :(得分:1)
停止服务器后,单击头骨图标以终止所有关联的进程。这应该有助于解决端口问题。
答案 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杀了它,我很好。