簡體   English   中英

Tomcat 未啟動(拋出 java.net.BindException: )

[英]Tomcat not starting (throwing java.net.BindException: )

我已經完成了以下設置來運行 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 服務器時,我仍然收到錯誤消息,因為 45 秒內未啟動 Tomcat。

我收到以下日志消息:

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

我已經提到了多個論壇,但對這種情況深有體會。 請指導我。

這些線路:

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" />

它說端口號8009已經被你操作系統上運行的一些其他進程占用, 嘗試搜索該進程並停止它或讓你的 tomcat 在不同的(免費)端口上運行

殺死此端口上的相應(偵聽)進程,即 8009。使用

netstat -a -o -n

查找進程的PID。 它可能看起來像這樣 TCP [::]:8009 [::]:0 LISTENING 892

使用 taskkill 命令終止進程。 例子:

taskkill /F /PID 892

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

這意味着其他一些進程已經在使用這個端口。 它可能是另一個Tomcat實例嗎?

您不必更改 server.port 來解決此問題...

Mac/Unix/Linux 用戶:如果重啟 Tomcat 后,此問題仍然存在,可能是因為 Tomcat 未正確關閉,並且仍有與之關聯的資源現在被鎖定。 您可以通過運行以下命令查看這些資源的 PID:

lsof | grep tomcat

使用以下命令終止這些進程:

kill -15 <PID>

這應該可以解決您的問題。

最好使用kill -15命令來終止 (-15) 進程而不是 SIGKILL (-9)。 -15 開關向進程發送信號以開始其關閉階段並清理有界資源。

嘗試 :http://localhost:8089 如果它不起作用(或)試試這個: Set:JRE_HOME : C:\\Program Files\\Java\\jre1.5.0_11(取決於你的 JRE 版本)並添加 C:\\ Program Files\\Java\\jre1.5.0_11(取決於您的 JRE 版本)\\bin 到路徑 Eclipse-> 轉到 windows 首選項:server->RuntimeEnvironment 刪除添加的 Server 和 Referesh 並添加新的 TomcatServer

TIL:服務器上的其他人可以在端口 80 上啟動 IIS 而不會告訴任何人。
如果你的tomcat配置了同一個端口,也會報這個錯誤。
需要更改 IIS 或 tomcat 上的端口。

在 IIS 中修改端口:
管理工具 | Internet 信息服務 (IIS) 管理器
右鍵單擊默認網站 | 編輯綁定...更改端口

-要么-

在 Tomcat 中修改端口:
打開 conf\\server.xml 並更新標簽中的端口值:

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

重啟Tomcat

享受 2 個網絡服務。

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

要么關閉正在使用 8009 的東西,要么將 server.xml 更改為使用 8009 以外的其他端口

如果已經使用了 tomcat 的連接器/關閉端口,通常會發生這種情況。 首先,運行shutdown.bat(有時我們會錯過tomcat的一個實例已經在運行)接下來,在命令提示符下運行

netstat -aon | findstr 0.0:<your port number which is giving bind exception>

獲取當前正在使用您的端口的應用程序的 PID。 要么終止該應用程序,要么使用運行時未列出的其他端口

netstat -a -o -n

使用免費端口一一更新所有可用端口。 這必須解決問題

2019 年 7 月 31 日 16:28:30.641 嚴重 [main] org.apache.catalina.core.StandardServer.await StandardServer.await: create[localhost: 8005 ]: java.net.BindException: Address already in use: JVM_Bind

其他 Tomcat 正在同一端口上運行,因此最好使用 9 而不是 15 殺死

殺死 -9 PID

這對我很有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM