gpt4 book ai didi

java - "java.net.BindException: Address already in use"错误的解决方法?

转载 作者:IT老高 更新时间:2023-10-28 21:02:01 25 4
gpt4 key购买 nike

我正在使用 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 想要开始检查是否关闭时,它无法绑定(bind)到该端口。

解决此问题的一种方法是定义您的 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

关于java - "java.net.BindException: Address already in use"错误的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com