Tomcat无法启动(抛出java.net.BindException :)

时间:2012-09-18 16:22:59

标签: java tomcat servlets web

我已经完成了以下设置来运行Java Web项目但不知何故我的Tomcat不是从Eclipse开始的:

JAVA_HOME : C:\Program Files\Java\jdk1.6.0_03  
PATH : C:\Program Files\Java\jdk1.6.0_03\bin  
CATALINA_HOME : D:\javaworkspaces\apache-tomcat-7.0.27  

然后根据需要,我从Eclipse设置一个新服务器并提供Tomcat安装路径。

正如在一些论坛中所建议的那样,我已将tomcat-juli.jar添加到课程路径中 尽管如此,当我尝试启动Tomcat服务器时,我得到了错误,因为tomcat没有在45秒内凝视。

我收到以下日志消息:

Jul 26, 2012 5:49:34 PM 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\jre6\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:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.6.0_03\bin;D:\eclipse-jee-indigo-SR2-win32\eclipse;;.  
Jul 26, 2012 5:49:34 PM org.apache.tomcat.util.digester.SetPropertiesRule   
 begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property         'source' to 'org.eclipse.jst.j2ee.server:JEE_Day01' did not find a matching property.  
Jul 26, 2012 5:49:34 PM org.apache.coyote.AbstractProtocol init  
INFO: Initializing ProtocolHandler ["http-bio-80"]  
Jul 26, 2012 5:49:35 PM org.apache.coyote.AbstractProtocol init  
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]  
Jul 26, 2012 5:49:35 PM org.apache.coyote.AbstractProtocol init  
SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"]  
java.net.BindException: Address already in use: JVM_Bind <null>:8009  
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:393)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:566)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:417)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:956)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:624)
at org.apache.catalina.startup.Catalina.load(Catalina.java:649)
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.load(Bootstrap.java:281)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449)  
Caused by: java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:380)
... 16 more  
Jul 26, 2012 5:49:35 PM org.apache.catalina.core.StandardService initInternal    
    SEVERE: Failed to initialize connector [Connector[AJP/1.3-8009]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8009]]  
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)  
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)  
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:624)
at org.apache.catalina.startup.Catalina.load(Catalina.java:649)
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.load(Bootstrap.java:281)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449)  
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
at org.apache.catalina.connector.Connector.initInternal(Connector.java:958)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
... 12 more

我已经提到了多个论坛,但我对此情况严重不满。请指导我。

10 个答案:

答案 0 :(得分:23)

这些界限:

SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"]
java.net.BindException: Address already in use: JVM_Bind <null>:8009  

暗示在端口8009上已经有服务正在运行。是否已经运行了tomcat(带有ajp)?

如果需要在8009上运行服务,您可以将server.xml中的连接器配置更改为如下所示:

<Connector port="8089" protocol="AJP/1.3" redirectPort="8443" />

答案 1 :(得分:6)

终止此端口上的相应(侦听)进程,即8009。 使用

  

netstat -a -o -n

查找进程的PID。它可能看起来像这样 TCP [::]:8009 [::]:0 LISTENING 892

使用taskkill命令终止进程。 例如:

  

taskkill /F /PID 892

答案 2 :(得分:5)

  

java.net.BindException:已在使用的地址:JVM_Bind:8009

这意味着其他一些进程已经在使用此端口。它可能是另一个Tomcat实例吗?

答案 3 :(得分:2)

您不必更改server.port来解决此问题......

Mac / Unix / Linux用户:如果重新启动Tomcat后,此问题仍然存在,可能是因为Tomcat未正确关闭,并且仍有与之关联的资源现已锁定。 您可以通过运行以下命令来查看这些资源的PID:

lsof | grep tomcat

使用以下方法终止这些流程:

kill -15 <PID>

这可以解决您的问题。

  

使用 kill -15 命令到TERM(-15),最好是进程而不是SIGKILL(-9)。 -15开关向进程发送信号以开始其关闭阶段并清理有界资源。

答案 4 :(得分:0)

尝试:http:// localhost:8089 如果它没有工作(或) 试试这个:设置:JRE_HOME:C:\ Program Files \ Java \ jre1.5.0_11(取决于你的JRE版本)并添加C:\ Program Files \ Java \ jre1.5.0_11(取决于你的JRE版本) \ bin到路径 Eclipse的&GT;转到Windows首选项:server-&gt; RuntimeEnvironment删除添加的Server和Referesh并添加新的TomcatServer

答案 5 :(得分:0)

TIL:服务器上的其他人可以在端口80上启动IIS,而不是告诉任何人 如果您为同一端口配置了tomcat,它也会报告此错误 需要更改IIS或tomcat上的端口。

修改IIS中的端口:
管理工具| Internet信息服务(IIS)管理器
右键单击默认网站|编辑绑定... 改变港口

-OR -

修改Tomcat中的端口:
打开conf \ server.xml并更新标记中的端口值:

<Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    URIEncoding="UTF-8"/>

重启Tomcat

享受2项网络服务。

答案 6 :(得分:0)

其他东西正在使用端口8009。

关闭使用8009的东西或更改server.xml以使用8009以外的其他端口

答案 7 :(得分:0)

如果已经使用了tomcat的连接器/关闭端口,通常会发生这种情况。 首先,运行shutdown.bat(有时我们会错过tomcat的一个实例已经运行) 接下来,在命令提示符下运行

netstat -a -o -n

获取当前正在使用您的端口的应用程序的PID。杀死该应用程序或使用运行时未列出的其他端口

richTextBox.SelectionColor = some_Color;
richTextBox.AppendText(some_Text);

答案 8 :(得分:0)

使用可用端口一个接一个地更新所有可用端口。这必须解决问题

31-Jul-2019 16:28:30.641严重[main] org.apache.catalina.core.StandardServer.await StandardServer.await:create [localhost: 8005 ]:     java.net.BindException:已使用的地址:JVM_Bind

答案 9 :(得分:0)

其他Tomcat在同一端口上运行,因此最好使用9而不是15来杀死

杀死-9 PID

这对我很有帮助。