【问题标题】:java.net.BindException: Address already in use: JVM_Bind <null>:80java.net.BindException:地址已在使用中:JVM_Bind <null>:80
【发布时间】:2014-11-02 18:34:24
【问题描述】:

我在启动 Tomcat 服务器时遇到绑定异常。 我试图杀死正在使用“80”的进程,因为有几个进程正在使用它。

出现错误,杀死进程 id 为 '0':

错误:无法终止 PID 为 0 的进程。原因:这是 关键系统进程。 Taskkill 无法结束此进程。

如何解决这个问题?

我不需要使用其他端口来运行 tomcat 服务器。

【问题讨论】:

    标签: java tomcat exception-handling


    【解决方案1】:

    使用以下命令查看你的tomcat端口是否已经被使用,

    netstat -a -b
    
    netstat -a -o | findstr :port
    

    例如

    netstat -a -o | findstr :8080
    

    例外java.net.BindException: Address already in use: JVM_Bind:80

    表示端口 80 由您的 Tomcat 服务器配置,并且已被您计算机上运行的其他应用程序使用。如果打开 Skype 或将 Skype 中的默认端口或其他应用程序的端口更改为 80 以外的端口,请退出。 tomcat安装目录。

    例外java.net.BindException: Address already in use: JVM_Bind

    表示您没有正确停止 tomcat 服务器并且您正在尝试再次启动服务器。在 Eclipse 中,我的解决方案是从服务器选项卡中删除项目,然后右键单击并将项目作为在服务器上运行。这将项目添加回 Tomcat 7 并且我没有收到 BindException 错误。这是由于您上次使用时关闭了 eclipse 而没有停止 Tomcat 服务器。

    【讨论】:

    • 两者都适合我。它基本上告诉您已经在使用的端口。这样它就会在提示中列出。
    【解决方案2】:

    我遇到了同样的问题。我收到错误 无法打开调试器端口 (127.0.0.1:63936): java.net.BindException "Address already in use: JVM_Bind" 我首先尝试了所有选项,但没有解决任何问题。对我有用的解决方案是,我启动了服务器,然后停止并再次以调试模式启动。然后服务器以调试模式启动。

    【讨论】:

      【解决方案3】:

      确保 /webapps/ROOT 文件存在并且它包含所有图标、WEB-INF 和 index.jsp 在文件夹中。

      当你启动Tomcat时,它会在&lt;Tomcat-Directory&gt;/conf/web.xml目录下运行这段代码:

      <welcome-file-list>
         <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      

      index.jsp的位置在&lt;Tomcat-Directory&gt;/webapps/ROOT/index.jsp

      另外,尝试使用 ./catalina.sh start 而不是 ./startup.sh 从 /bin 目录运行 tomcat。出于某种原因,./startup.sh 不那么可靠。

      【讨论】:

        【解决方案4】:

        我在使用 tomcat 进行 spring 项目时遇到了这个问题:

        地址已在使用中:JVM_Bind

        为了解决这个问题,我在 tomcat/bin 文件夹中运行了一个 shutdown.bat 文件。

        【讨论】:

          【解决方案5】:

          我完全忘记了我之前安装了另一个版本的 Apache Tomcat,这导致了这个问题。因此,只需尝试卸载以前的版本。希望对您有所帮助。

          【讨论】:

            【解决方案6】:

            错误:

            java.net.BindException:地址已在使用中:JVM_Bind :80

            表示另一个应用程序正在侦听端口 80。

            您可以通过lsof 命令检查哪个进程正在使用该端口,例如sudo lsof -i:80。然后停止或杀死它。

            如果无法帮助找到运行在同一端口上的应用程序,则常见的错误是 Tomcat 配置错误。

            例如,默认情况下,Tomcat 在端口 8005 上侦听 SHUTDOWN 命令,如果您设置另一个连接器在同一端口上侦听,则会出现端口冲突。

            所以请仔细检查server.xml这些端口是否不同:

            <Server port="8005" shutdown="SHUTDOWN">
                <Connector port="8983" protocol="HTTP/1.1"
            

            【讨论】:

              【解决方案7】:

              C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\conf

              Source 文件夹中Server.xml 文件中的端口号为8080。将端口号更改为8081...等

              【讨论】:

                【解决方案8】:

                我删除了我的服务器并重新添加了它。它发生是因为我通过任务管理器手动关闭了 eclipse,但它没有关闭 tomcat。

                【讨论】:

                  【解决方案9】:

                  我犯了一个愚蠢的错误,我花了 2 个小时来解决它。我在这里提到它是为了其他人可能会帮助他们。错误是我启用了 ssl 连接器并将 https 和 http 端口都更改为相同的编号。

                  【讨论】:

                    【解决方案10】:

                    设置 Tomcat 监听 80 端口是 错误 ,对于开发来说 8080 是一个很好的端口。对于生产用途,只需设置一个将您的请求转发到您的 tomcat 的 apache。 Here 是一个方法。

                    【讨论】:

                      【解决方案11】:

                      PID 0 是系统空闲进程,它肯定没有监听 80 端口。您如何检查哪个进程正在使用该端口?

                      你可以使用

                      netstat /nao | findstr "80"
                      

                      找到PID并检查它是什么进程。

                      【讨论】:

                      • 我执行了相同的命令来查找端口“80”。 “TCP 172.25.164.79:49767 172.25.172.6:80 TIME_WAIT 0”
                      【解决方案12】:

                      错误:

                      Tomcat:java.net.BindException:地址已在使用:JVM_Bind :80

                      表明端口 80 已在使用中。
                      您可以:

                      • 尝试搜索该进程并停止它,或者
                      • 让你的 tomcat 在不同的(免费)端口上运行

                      另请参阅:Deployment error:Starting of Tomcat failed, the server port 8080 is already in use

                      【讨论】:

                        【解决方案13】:

                        如果您有一些进程正在侦听端口 8080,那么您始终可以将 tomcat 配置为侦听不同的端口。通过编辑位于 tomcat 服务器 conf 目录下的 server.xml 来更改侦听器端口。

                        在 server.xml 中搜索 Connector port="8080" 并将端口号更改为其他端口。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2015-10-30
                          • 1970-01-01
                          • 2018-03-12
                          • 1970-01-01
                          • 2012-09-26
                          相关资源
                          最近更新 更多