繁体   English   中英

“java.net.BindException: Address already in use”错误的解决方案?

[英]Solution to "java.net.BindException: Address already in use" error?

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

这是由于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

在此处输入图片说明停止服务器后单击骷髅图标以终止所有相关进程。 这应该有助于解决端口问题。

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

错误: 代理抛出异常: java.rmi.server.ExportException: Port already in use: 912 3; 嵌套异常是:java.net.BindException: Address already in use

在 tomcat [cc@Cdf bin]$ vim catalina.sh 中,将 9123 更改为非活动数字,例如 8998 。 然后, [cc@Cdf bin]$ ./start.sh;tailf ../logs/catalina.out

右键单击项目 --> Run As --> Run Configurations ---> 在左侧选择 Spring Boot App 下的项目 --> 更改 JMX 端口并尝试

我在启动 SymmetricsDS 服务时遇到过这个问题。 这是我针对 Linux 的解决方案,稍后可以使用。

top | grep java
kill -9 javaPID

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM