地址已被占用:JVM_Bind Java

62

有时候当我重启以下应用程序(基于Java、Struts、Mysql和Jboss 4.05版本),会出现错误:Address already in use: JVM_Bind

我所知道的唯一修复方法是重新启动机器并再次尝试,它就可以工作了。 否则,有时我按Ctrl-Alt-Del并停止所有与Java相关的进程,这也有时有效。

但是确切的原因是什么,我们该如何防止这个问题发生?


有时候端口所有权会在你关闭Java程序后仍然停留和绑定。但是,使用Eclipse Java EE,端口绑定会在你退出程序的那一刻被移除。 - CodyBugstein
17个回答

0

我在Windows上也遇到了同样的问题。我的解决方案是找出调试要连接的端口号。(在IntelliJ中,一个红色矩形已经给出了信息:“运行Tomcat时出错:无法打开调试器端口(127.0.0.1:XXXXX):...已经在使用中...”) 假设XXXXX是端口号。 然后我在cmd窗口中搜索了问题和PID:

netstat -ano | find "CLOSE_WAIT" | find ":XXXXX"

我在结果行中得到了PID号码,它是最后一个数字。(假设为YYYY) 最后:

TASKKILL /PID YYYY

额外信息:WinSCP 同时退出了,可能是导致我的问题的原因。 :)

0

最近我在Eclipse中启用JMX时遇到了这个问题,我错误地为每个服务器设置了相同的端口。

只需为每个JMX远程设置不同的端口即可。

服务器1

-Dcom.sun.management.jmxremote.port=9000

服务器2

-Dcom.sun.management.jmxremote.port=9001

0

我也遇到了这个问题。对我来说,我无法启动/停止openfire(它显示已经停止,但是所有东西仍在运行)

sudo /etc/init.d/openfire stop
sudo /etc/init.d/openfire start

另外,重启Apache也没有帮助

sudo /etc/init.d/apache2 restart

错误发生在以下位置:

/opt/openfire/logs/stderror.log
Error creating server listener on port 5269: Address already in use
Error creating server listener on port 5222: Address already in use

我解决这个问题的方法是,在我的主机管理区域内实际关闭了服务器。

0

请尝试以下选项以解决JVM绑定异常:

  1. 启动并停止服务器。检查服务器进程ID,然后杀死和停止服务器。
  2. 转到控制面板->管理工具->服务->检查所有服务器并停止所有服务器,然后启动您自己的服务器。
  3. 更改您使用的浏览器。例如,如果您使用IE,请将其更改为Mozilla Firefox。

0

您可以尝试删除团队服务器凭据,很可能这些凭据中会包含服务器列中的某种端口。 例如 https://wathever.visualstudio.com:443

前往 Windows/Preferences 展开 Team 然后选择 Team Foundation Server 进入凭据并删除其中的任何内容。


0
有时候我会使用lsof -i:8080,但我什么也得不到,没有pid。好像一定有某些东西正在进行。如果你遇到了这种情况,那可能是docker导致的。你可以使用docker ps命令检查是否有任何旧的docker未关掉并将其终止。这可能是端口已被占用的罪魁祸首。

0

在 Mac 上,即使我使用 netstat 进行搜索,也没有进程绑定到该端口,但我仍然会收到“地址已在使用中”的绑定异常。

在这种情况下,如果确实没有正在运行该端口的进程,则可以进入

Safari -> 首选项 -> 隐私 -> 管理网站数据... -> 找到“localhost” -> 删除

解决了问题。似乎 Safari 的 Web 缓存以某种方式保留了对该端口的引用,删除该缓存会释放该端口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接