【问题标题】:Address already in use: JVM_Bind java地址已在使用中: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,端口绑定会在您除程序之外的那一刻被删除

标签: java web-applications jboss struts


【解决方案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)的端口已经在使用时,我通常会遇到这种情况

      通常的嫌疑人

      1. Apache Http Server => 如果在 Windows 中工作,请关闭该服务。
      2. IIS => 使用
      3. 停止 ISS
      4. 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 绑定异常选项:

      1. 启动和停止服务器。并检查服务器进程 ID 并终止和停止服务器。
      2. 进入控制面板->管理工具->服务->检查所有服务器并停止所有服务器,然后启动自己的服务器。
      3. 更改您使用的浏览器。例如,如果 您使用的 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,您可以检查周围是否有旧码头工人并杀死他们。这可能是端口已在使用错误的罪魁祸首。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2015-10-30
                        • 2021-08-26
                        • 2018-03-12
                        • 2014-11-02
                        • 2018-01-02
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多