地址已在使用中:JVM_Bind java

Posted

技术标签:

【中文标题】地址已在使用中:JVM_Bind java【英文标题】:Address already in use: JVM_Bind java 【发布时间】:2011-02-15 21:26:23 【问题描述】:

每当我重新启动应用程序时,它建立在 爪哇 支柱 mysql和Jboss 4.05版本 我收到错误,因为 Address already in use: JVM_Bind

我知道的唯一解决方法是重新启动机器并重试,它会起作用。 Else 有时我会执行 Ctrl-Alt-Del 并停止所有与 Java 相关的进程,有时这也可以。

但是具体的原因是什么?我们如何才能避免这个问题呢?

【问题讨论】:

有时,即使在您关闭 Java 程序后,端口所有权仍然存在并保留在您的 Java 程序中。但是,使用 Eclipse Java EE,端口绑定会在您除程序之外的那一刻被删除 【参考方案1】:

关于如何防止它的快速答案是,您很可能需要先停止 JBoss,然后再重新启动它。

您应该能够在控制台视图中调用“终止”按钮来关闭服务器。

【讨论】:

我正在从 Eclipse 启动 JBoss【参考方案2】:

地址已在使用中:JVM_Bind

表示其他应用程序已经在侦听您当前应用程序尝试绑定的端口。

您需要做的是,更改当前应用程序的端口或更好;只需找出已经在运行的应用程序并将其杀死。

在 Linux 上,您可以通过使用找到应用程序 pid,

netstat -tulpn

【讨论】:

您如何发现在 WINdows 中,我正在 Windows 上运行我的应用程序 netstat 也可以在 Windows 上运行,在控制台上尝试:netstat -an 更多信息,en.wikipedia.org/wiki/Netstat 另一个建议是不要在 Windows 上运行应用程序服务器。否则,不要单击重新启动按钮也可能会有所帮助 - 而是停止,等待 5 秒钟,然后手动重新启动。有时java进程只需要一点时间就可以关闭。例如,如果他们忙于 db 操作,他们往往会一直挂起,直到该操作完成。 这个答案很好(+1);但是,javarevisited.blogspot.com/2011/12/… 更详细一些,尤其是关于 Windows。如果您合并了其中的一些信息,这个答案会更好。 tulpn 无法识别【参考方案3】:

MySql 有没有可能和 JBoss 在同一个端口上监听?

错误消息中是否提供了端口号 - 类似于 Address already in use: JVM_Bind:8080

您可以更改 JBoss server.xml 中的端口来测试。

【讨论】:

【参考方案4】:

该错误意味着您正在尝试在另一个 ServerSocket 已使用的端口上创建新的 ServerSocket。因此,请尝试让您的应用程序关闭您知道的所有套接字和连接,并确保您的应用程序完全终止。还要检查您的程序是否启动了另一个进程。

【讨论】:

【参考方案5】:

当服务器(我使用 JBoss)的端口已经在使用时,我通常会遇到这种情况

通常的嫌疑人

    Apache Http Server => 如果在 Windows 中工作,请关闭该服务。 IIS => 使用 停止 ISS Skype =>是的,我将 Skype 连接到端口 80

要更改 JBoss 4.2.x 自身绑定的端口,请转到:

“C:\jboss4.2.2\server\default\deploy\jboss-web.deployer\server.xml”

这里默认是服务器的实例 在此处更改端口:

在上面的例子中,端口绑定到 8080

【讨论】:

关闭Skype并运行您的Java应用程序,然后打开Skype。【参考方案6】:

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

    启动和停止服务器。并检查服务器进程 ID 并终止和停止服务器。 进入控制面板->管理工具->服务->检查所有服务器并停止所有服务器,然后启动自己的服务器。 更改您使用的浏览器。例如,如果 您使用的 IE 将其更改为 Mozilla firefox。

【讨论】:

【参考方案7】:

我也遇到了这个问题。对我来说,我无法启动/停止 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

我解决这个问题的方式是,我必须为我的主机关闭管理区域内的服务器。

【讨论】:

【参考方案8】:

也有可能是..\tomcat\conf\server.xml中对8080端口的双重定义造成的:

<Connector port="8080"
           enableLookups="false" redirectPort="8443" debug="0"/>
<Connector port="8080"
           enableLookups="false" address="127.0.0.1" maxParameterCount="30000"/>

【讨论】:

【参考方案9】:

在 Windows 中,当 Eclipse 在没有完全关闭的情况下崩溃时会发生这种情况,它将使本地 Jetty 或 Tomcat 服务器继续运行。 当您重新打开 Eclipse 并尝试再次启动服务器时,这将导致“地址已在使用中:JVM_Bind”

你可以通过打开任务管理器找到javaw.exe进程并结束它来解决这个问题。

然后就可以在Eclipse上重启服务器了。

【讨论】:

超级!为我工作【参考方案10】:

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

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

我将 PID 号作为结果行中的最后一个数字。 (假设是 YYYY) 最后:

TASKKILL /PID YYYY

一个额外的信息:Winscp 同时注销,可能是它导致了我的问题。 :)

【讨论】:

【参考方案11】:

我最近在 Eclipse 中对两个正在运行的 tomcat 服务启用 JMX 时发生了这种情况。我错误地为每个服务器设置了相同的端口。

只需给每个 jmx 远程一个不同的端口

服务器 1

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

服务器 2

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

【讨论】:

【参考方案12】:

打开命令行并输入:netstat -a -o -ntasklist 以查看当前正在运行的进程。 找到与Java相关的端口并输入:taskkill /F /PID &lt;your PID number&gt;。 点击进入。

【讨论】:

【参考方案13】:

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

转到 Windows/首选项 展开 Team 然后 Team Foundation Server 转到凭据并删除那里的任何一个。

【讨论】:

【参考方案14】:

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

在这种情况下,进入

Safari -> 首选项 -> 隐私 -> 管理网站数据... -> 查找“本地主机” -> 删除

解决问题,如果确实没有进程在该端口上运行。似乎 Safari 的网络缓存以某种方式维护了对端口的引用,并且删除该缓存可以释放端口。

【讨论】:

【参考方案15】:

有时,我使用lsof -i:8080 并没有得到任何回报,没有pid。好吧,必须发生一些事情。如果这是你的情况,它可能是 docker。通过使用docker ps,您可以检查周围是否有旧码头工人并杀死他们。这可能是端口已在使用错误的罪魁祸首。

【讨论】:

以上是关于地址已在使用中:JVM_Bind java的主要内容,如果未能解决你的问题,请参考以下文章

地址已在使用中:JVM_Bind java

JAVA:java.net.BindException:地址已在使用:JVM_Bind [重复]

地址已在使用中:JVM_Bind 但未列出使用带有 netstat 的端口的进程

通过 SSH 隧道的 Java Swing 应用程序 MySQL 连接失败,并显示“本地端口 127.0.0.1:...无法绑定...地址已在使用中:JVM_Bind”

线程“main”java.net.BindException中的绑定服务器套接字异常:地址已在使用:JVM_Bind java [重复]

Grails 项目运行错误 - 服务器无法为端口 8080 启动:地址已在使用中:JVM_Bind