【问题标题】:cannot start Tomcat 7 server - java.net.BindException: Address already in use无法启动 Tomcat 7 服务器 - java.net.BindException:地址已在使用中
【发布时间】:2012-12-25 15:52:11
【问题描述】:

您好,我无法从 eclipse 启动 tomcat 7 服务器。

当我从 eclipse 开始时,我得到以下错误日志。

Jan 11, 2013 10:10:27 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\Jayant\Desktop\data\adt-bundle-windows-x86\eclipse;;.
Jan 11, 2013 10:10:28 AM org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jan 11, 2013 10:10:28 AM org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jan 11, 2013 10:10:28 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1165 ms
Jan 11, 2013 10:10:28 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 11, 2013 10:10:28 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.12
Jan 11, 2013 10:10:28 AM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jan 11, 2013 10:10:28 AM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 11, 2013 10:10:28 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 507 ms
Jan 11, 2013 10:10:28 AM org.apache.catalina.core.StandardServer await
SEVERE: StandardServer.await: create[localhost:8005]: 
java.net.BindException: Address already in use: JVM_Bind
    at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
    at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
    at java.net.PlainSocketImpl.bind(Unknown Source)
    at java.net.ServerSocket.bind(Unknown Source)
    at java.net.ServerSocket.<init>(Unknown Source)
    at org.apache.catalina.core.StandardServer.await(StandardServer.java:422)
    at org.apache.catalina.startup.Catalina.await(Catalina.java:707)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:653)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)

Jan 11, 2013 10:10:28 AM org.apache.coyote.AbstractProtocolHandler pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Jan 11, 2013 10:10:29 AM org.apache.coyote.AbstractProtocolHandler pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
Jan 11, 2013 10:10:30 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Jan 11, 2013 10:10:30 AM org.apache.coyote.AbstractProtocolHandler stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
Jan 11, 2013 10:10:30 AM org.apache.coyote.AbstractProtocolHandler stop
INFO: Stopping ProtocolHandler ["ajp-bio-8009"]

现在我收到以下错误。

Jan 11, 2013 10:18:59 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\Jayant\Desktop\data\adt-bundle-windows-x86\eclipse;;.
Jan 11, 2013 10:19:00 AM org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jan 11, 2013 10:19:00 AM org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jan 11, 2013 10:19:00 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 872 ms
Jan 11, 2013 10:19:00 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 11, 2013 10:19:00 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.12
Jan 11, 2013 10:19:00 AM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jan 11, 2013 10:19:00 AM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 11, 2013 10:19:00 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 535 ms
Jan 11, 2013 10:20:13 AM org.apache.catalina.core.StandardServer await
WARNING: StandardServer.await: Invalid command 'GET / HTTP/1.1' received
Jan 11, 2013 10:20:19 AM org.apache.catalina.core.StandardServer await
WARNING: StandardServer.await: Invalid command '' received

【问题讨论】:

    标签: eclipse tomcat7


    【解决方案1】:

    如果您有多个应用程序,请检查是否有任何其他应用程序使用 server.xml 文件中定义的相同服务器端口。对我来说就是这种情况。

    【讨论】:

      【解决方案2】:

      转到 server.xml 文件并进行更改

      <Server port="8005" shutdown="SHUTDOWN">
      

      <Server port="8006" shutdown="SHUTDOWN">
      

      【讨论】:

        【解决方案3】:

        在 Windows 10 中,8005 端口已被保留(用于某些用途)。在tomcat/conf/server.xml 中更改为例如 8089(或任何空闲端口)

        【讨论】:

          【解决方案4】:

          使用:

          pkill -f tomcat
          

          摆脱任何现有的或无响应的 tomcat 实例或进程。

          start tomcat. 
          

          【讨论】:

          • 请注意这仅适用于 linux。
          【解决方案5】:

          解决此问题的两种方法:

          1> 进入tomcat服务器安装目录,打开server.xml文件,查看是否

          连接器和服务器端口不同。如果不让它们成为不同的端口,然后检查这些端口上是否没有运行任何东西

          2> 从开始打开命令提示符并键入 netstat -ano | findstr 8010 检查端口是否正在使用。如果它们被使用,那么你会得到 TCP 0.0.0.0:8005 0.0.0.0:0 监听 4 TCP [::]:8005 [::]:0 监听 4

          那么 a> 使用任务管理器中的进程 ID(在我的例子中为 4)杀死进程

          如果它们没有被使用,那么你在 cmd 中什么也看不到

          【讨论】:

            【解决方案6】:

            如果你使用的是 linux 系统,那么在终端输入 ps -ef|grep tomcat。然后找到进程id(PID)。然后在终端上输入 kill -9 。现在,启动 tomcat 服务器。

            【讨论】:

              【解决方案7】:

              常见的错误是在 server.xml 配置文件中使用相同的 Shutdown 和 Connector 端口。

              这些端口应该不同,下面是正确的示例:

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

              默认情况下,Tomcat 在端口 8005 上侦听 SHUTDOWN 命令,并且它应该始终与连接器端口不同。

              如果您的端口仍在使用中,请尝试sudo lsof -i:8005 查找原因。

              【讨论】:

                【解决方案8】:

                您可以做的不是杀死进程,您可以转到tomcat目录/conf/server.xml,在这里您可以将关闭端口(8005)更改为其他端口。还将默认端口(8080)和其他更改为不同的端口。因此,您可以在单台机器上运行多个 Tomcat 实例。重新启动您的服务器(如果问题仍然存在)在 Eclipse 中重新创建它。

                【讨论】:

                  【解决方案9】:

                  我遇到了这个问题(端口 8005 已经被使用),根本原因是由于我的机器上已经运行了一个现有的 tomcat 进程。所以,我需要做的基本上是杀死现有进程并重新启动tomcat。

                  【讨论】:

                    【解决方案10】:

                    admin 端口用于接收管理命令,HTTP 端口用于接收 HTTP 请求。您必须使用不同的端口。发生的事情是:HTTP 连接器无法启动,因为服务器已经打开了该端口。您的浏览器/客户端/无论向管理端口发送请求,服务器不理解 HTTP 并记录此错误。

                    尝试将 Tomcat 重新安装到另一个端口。

                    【讨论】:

                    • 现在我收到以下错误@Neurenor。查看修改后的代码
                    • 在浏览器中尝试 localhost:8080。
                    • 尝试重新安装tomcat并在安装时提供端口号。
                    • 嗯,我从 Eclipse 本身安装了 tomcat。确实添加了新服务器并下载并安装它没有问我端口号。
                    • 尝试在eclipse之外安装tomcat,它会询问你。并将你的tomcat安装目录设置为eclipse。
                    猜你喜欢
                    • 2012-03-09
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-03-21
                    • 2012-05-30
                    • 1970-01-01
                    • 2013-04-16
                    相关资源
                    最近更新 更多