2010-05-05 101 views
40

每当我重新启动应用程序,它是建立在 的Java Struts的 MySQL和Jboss的4.05版本有时候 我得到的误差已在使用地址:JVM_Bind地址已在使用:JVM_Bind的Java

只有解决我知道的是重新启动机器,然后再试一次,它会起作用。 否则有时候我会按Ctrl-Alt-Del并停止所有与Java相关的进程,有时候这也会起作用。

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

+0

有时端口所有权不散,坚持你的Java程序关闭即使它。但是,在Eclipse Java EE中,除了程序之外,端口绑定被删除 – CodyBugstein 2014-06-24 03:59:33

回答

38

地址已在使用:JVM_Bind

意味着一些其他的应用程序已经听您的当前应用程序试图绑定端口。

你需要做的是,为你当前的应用程序或更好的端口;只需找出已经运行的应用程序并杀死它。

在Linux上,你可以找到通过使用应用程序的PID,

netstat -tulpn 
+3

您如何在Windows中找到我正在Windows上运行我的应用程序 – gmhk 2010-05-05 11:47:38

+7

netstat也可以在windows上运行控制台尝试:netstat -an 获取更多信息,http://en.wikipedia.org/wiki/Netstat – phoenix24 2010-05-05 12:02:33

+1

另一个建议是不要在Windows上运行应用程序服务器。 否则,它也可能有助于不点击重启按钮 - 而是停止,等待5秒钟,然后再次手动启动。有时候java进程只需要一点时间关闭。例如,如果他们忙于数据库操作,他们往往会一直挂起,直到完成操作。 – rompetroll 2010-05-05 12:43:46

1

有关如何防止它的快速回答是,在重新启动它之前,最有可能需要停止JBoss。

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

+0

我从Eclipse启动JBoss – gmhk 2010-05-05 11:32:39

2

是否有可能是MySQL同一端口的JBoss上听吗?

是否有错误信息中给出端口号 - 像Address already in use: JVM_Bind:8080

可以更改端口的JBoss server.xml中进行测试。

1

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

12

我经常遇到这样当端口的服务器(我使用JBoss)已经在使用

秋后算账

  1. Apache HTTP服务器=>如果窗口工作拒绝服务。
  2. IIS =>使用停止ISS
  3. 的Skype =>酵母我的Skype其自身附着到端口80

要改变到的JBoss 4.2.x版结合本身去港口:

”C:\ jboss4.2.2 \ server \ default \ deploy \ jboss-web.deployer \ server。XML”

这里默认的是服务器的实例 改变这里的端口:

<连接器端口= “8080” 地址= “$ {} jboss.bind.address” >

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

+0

关闭Skype并运行你的Java应用程序,然后调出Skype。 – signonsridhar 2016-10-17 21:18:35

0

请尝试以下选项对JVM结合EXCE ption:

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

我解决这个问题的方式,我不得不关闭服务器在我的主机管理区域内。

1

它可以在.. \ tomcat的也造成端口8080的双重定义\的conf \ server.xml中:

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

在windows这种情况发生在Eclipse的崩溃没有一个干净关闭,将有本地Jetty或Tomcat服务器继续运行。 当你重新打开Eclipse并尝试再次启动服务器时,这将导致“地址已被使用:JVM_Bind”

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

然后您可以在Eclipse上重新启动服务器。

enter image description here

0

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

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

我得到的PID号在结果行的最后一个数字。(比方说,YYYY) 最后:

TASKKILL /PID YYYY 

一个额外的信息:WINSCP同时注销了,大概这是造成我的问题。 :)

0

这最近发生在Eclipse上的两个正在运行的Tomcat服务上启用JMX时。我错误地把每个服务器的相同端口。

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

服务器1

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

服务器2

-Dcom.sun.management.jmxremote.port=9001 
相关问题