![](/img/trans.png)
[英]Tomcat doesn't start from eclipse on startup : Several ports (8005, 8080) required by Tomcat Server at localhost are already in use
[英]Several ports (8005, 8080, 8009) required by Tomcat Server at localhost are already in use
當我嘗試在 Eclipse 中的 Tomcat 上運行一個簡單的 JSP 程序時,出現以下錯誤。
localhost 上的 Tomcat v6.0 服務器所需的幾個端口(8005、8080、8009)已被使用。 服務器可能已經在另一個進程中運行,或者系統進程可能正在使用該端口。 要啟動此服務器,您需要停止其他進程或更改端口號。
這是怎么引起的,我該如何解決?
您已經運行了另一個 Tomcat 實例。 您可以通過在 Web 瀏覽器中訪問http://localhost:8080
來確認這一點,並檢查您是否獲得了 Tomcat 默認主頁或特定於 Tomcat 的 404 錯誤頁面。 兩者都是 Tomcat 運行良好的同樣有效的證據; 如果沒有,那么您將收到特定於瀏覽器的 HTTP 連接超時錯誤消息。
你需要關閉它。 轉至Tomcat 安裝文件夾的/bin
子文件夾並執行shutdown.bat
(Windows) 或shutdown.sh
(Unix) 腳本。 如果無效,請關閉 Eclipse,然后打開任務管理器並殺死所有java
和/或javaw
進程。
或者,如果您出於某種原因實際將其安裝為 Windows 服務(這就是為了生產而在您剛剛開發時沒有幫助),請打開服務管理器(開始 > 運行 > services.msc )並停止 Tomcat 服務。 如有必要,請完全卸載 Windows 服務。 對於開發,只需要 ZIP 文件就足夠了。
或者,如果您的實際意圖是同時運行兩個 Tomcat 實例,那么您必須配置第二個實例以偵聽不同的端口。 有關更多詳細信息,請參閱 Tomcat 文檔。
kill $(ps -aef | grep java | grep apache | awk '{print $2}')
如果您在 Windows 上運行,請在命令行提示符下嘗試此操作:
netstat -ano
這將顯示所有正在使用的端口以及使用該端口的進程的進程 ID PID #。 然后Ctrl + Alt + Del並打開任務管理器以查看是哪個進程。
然后您可以選擇關閉/停止它或將您的服務器配置為使用另一個端口。 要檢查新選擇的端口(假設為 8010)是否可用,請執行以下操作:
netstat -ano | grep 8010
如果它沒有返回任何行,那么你很好。
要更改端口,請轉到服務器視圖,打開server.xml並更改那里的端口。 我的有這個條目:
Connector port="8010" protocol="AJP/1.3" redirectPort="8443"
如果您在 mac 環境中,這就是我所做的。
從終端查找在此端口上運行的進程 ID,例如 8080:
lsof -i :8080
並殺死它:
kill -9 <PID>
例子:
您可能會看到以下結果:
MacSys:bin krunal.$ lsof -i :8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 21347 krunal 52u IPv6 XXX 0t0 TCP *:http-xxx (LISTEN)
並殺死它:( kill -9 21347
)
釋放已用於在 Eclipse 中運行 tomcat 服務器的端口的步驟
例如,假設使用了8080端口,我們需要騰出8080來運行tomcat。
第1步:
C:\\用戶\\用戶名>netstat -o -n -a | findstr 0.0:8080
TCP 0.0.0.0:3000 0.0.0.0:0 聆聽 3116
現在,我們可以看到 8080 的 LISTENING 端口是 3116 ,
我們現在需要殺死 3116
第2步:-
C:\\用戶\\用戶名>taskkill /F /PID 3116
第 3 步:轉到 Eclipse 並啟動 Server ,它將運行
如果您使用 Eclipse,則雙擊服務器並雙擊 tomcat 服務器,然后將打開一個文件。 在該文件中,將 HTTP 端口更改為其他端口號並保存( Ctrl + S ),然后再次啟動服務器。
如果 Eclipse 說
Tomcat v6.0 Server at localhost 需要的幾個端口(8005、8080、8009)已經在使用
出現此錯誤是因為 tomcat 可能正在后台運行,因此請先停止該服務器..遵循以下詳細信息。
解決辦法是:
謝謝!
我沒有另一個運行 Tomcat 的實例,也沒有使用“Tomcat 端口”(在我的例子中是 8088 端口)的其他進程。 Eclipse 在啟動 Tomcat 時發送相同的消息:
....服務器可能已經在另一個進程中運行,或者系統進程可能正在使用該端口。 要啟動此服務器,您需要停止其他進程或更改端口號。
我是這樣解決問題的:
在閱讀了所有建議的答案后我做了什么,因為我知道我的端口已經在使用中。 我在eclipse中的Servers選項卡下雙擊Tomcat,它打開概述信息,然后找到端口信息。 剛剛更改了沖突端口,因為我的是 8009 端口(啟動服務器時提到的錯誤)。 我已將其更改為 8008,並且運行良好。 如果更改的端口不會被使用,請嘗試服務器將啟動。
第 1 步: netstat -a -o -n它將顯示一個網絡列表,搜索本地地址,如 127.0.0.1:8080 並記下 PID (eq 3624)
C:\>netstat -a -o -n
步驟2: taskkill /F /PID 3624 。 運行此命令以終止該進程。
C:\>taskkill /F /PID 3624
發帖鏈接
在 Windows 上使用命令停止已經運行的 tomcat 實例並嘗試在 eclipse 中再次運行它,它可能會工作。
net stop tomcat7
或者,如果您只想在其他端口上運行,則可以更改服務器 XML 中的端口。
解決您的問題的簡單方法:
服務器可能已經在另一個進程中運行,或者系統進程可能正在使用該端口。 要終止該端口,請執行以下操作:
1) 從以下鏈接下載TCPView(僅 285kb) 。
http://technet.microsoft.com/en-in/sysinternals/bb897437.aspx
2) 解壓文件夾並啟動TCPView應用程序。
3)右鍵單擊java.exe (因為8009、8005端口是java進程常用的端口),選擇結束進程選項。
這會很容易地停止另一個過程..
注意:運行TOMCATPATH/bin/shutdown.bat當 Tomcat 包含一些惡魔或非托管線程時,它可能不會關閉 Tomcat。 在這種情況下, TCPView可以正常工作,沒有任何問題。
有時,如果即使嘗試了@BalusC 建議的 shutdown.bat 之后端口也沒有被釋放,您可以終止 javaw 進程。 執行以下步驟:
輸入命令 ps。 您可能會看到如下圖像:
查看進程“javaw”的進程號。進程號是列中最右邊的數字,例如我在javaw的圖像進程號中突出顯示。
輸入命令 kill 。 javaw 被殺死,現在您必須能夠運行該程序。
如果上述努力都沒有幫助,這里還有另一種選擇。 您可能正在使用共享驅動器中的 Eclipse(例如,H:) 。 如果是這樣,請將整個 Eclipse 目錄移動/復制到 C: 並重試。
我的 Eclipse 無法打開 Tomcat 服務器的端口(出現上述錯誤),甚至無法連接到互聯網。 我還嘗試了另一個 Tomcat 插件(Sysdeo),它也無法打開端口。
這些是我嘗試過的選項:
檢查並殺死其他Tomcat實例
netstat -ano
並檢查是否有任何其他進程正在使用沖突的端口。在 Eclipse 中更改 Tomcat 端口
殺死 java.exe 和 javaw
請參閱我關於 Eclipse 未連接到 Internet 的其他答案( https://stackoverflow.com/a/37246087/4212710 )。
對於 Windows 用戶:
使用 CTRL+SHIFT+ESC 組合鍵直接進入任務管理器。
通過右鍵單擊並選擇“結束任務”來終止“java.exe”進程。
如果您在 Eclipse 中使用 Java EE 並嘗試在 Eclipse 中以調試模式啟動 Tomcat 服務器,那么您將收到此類錯誤。 您必須切換到 Eclipse 中的調試預期。 我已經解決了我的問題。
對我有用的更簡單的修復是通過“服務器”選項卡從 tomcat 中刪除我當前部署的 web 應用程序。 一旦我刪除它們,問題就會消失。 只需通過運行方式 > 在服務器上運行來重新部署您的項目。
當 Apache Tomcat 無法正常終止時,即使發送了關閉指令,也會經常出現該問題。 就我而言,使用 Tomcat 8,這種情況經常發生。 幸運的是,您可以使用 Windows PowerShell 和netstat
命令創建一個簡單的腳本來終止該進程。
以下 PowerShell 腳本將解析netstat
的輸出以查找正在偵聽127.0.0.1:8005
任何進程,提取其 PID,然后終止該進程:
netstat -a -o -n `
| select -skip 4 `
| % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}} `
| ? {$_.Fields[1] -match '127\.0\.0\.1\:8005$'} `
| % {Write-Host "Killing PID" $_.Fields[4] "..."; taskkill /F /PID $_.Fields[4] }
如果您的server.xml
將 Tomcat 配置為使用不同的端口或 IP,請相應地編輯腳本第四行上的正則表達式。
最后,我應該指出 Linux 上的情況更好,因為您可以指示 Tomcat 在啟動時將其 PID 保存到一個文件中,然后使用開關強制關閉 - 'nix 系統的關閉腳本已經具有不需要使用netstat
終止進程和偵探工作的能力。
如果上述問題發生在基於 Windows 7 或 10 的操作系統中,則是因為 Tomcat 作為 Windows 服務運行。 要停止 Tomcat 作為 Windows 服務運行,請打開 Windows 控制面板。 找到服務“Apache Tomcat”並停止它。 另一種方法是使用 cmd 終止在端口 8080 上運行的進程。
打開 cmd 以管理員身份運行它。
這可能是因為您沒有正確停止您的 tomcat 服務。 要做到這一點,打開你的任務管理器,你可以看到一個javaw.exe
服務。 首先停止該服務。 現在重新啟動你的 tomcat 它工作正常。
在 Eclipse 上,對項目“Servers”下的 Tomcat 配置文件夾進行原始刪除。 我將其作為最后的希望進行了嘗試,並且奏效了。
在windows的情況下,我遇到了一個新東西......從/ bin文件夾中停止tomcat將不會立即釋放端口8080。釋放端口大約需要5-10分鍾。 10 分鍾后,如果我嘗試運行我的項目 Run-> Run on server .. 它允許運行。
我不確定我的理解是否正確!
本地主機上的Tomcat vX.X Server 所需的多個端口(8005、8080、8009)已在使用中
要檢查另一個 Tomcat 實例是否已經在運行或其他某個進程正在使用您可以使用的端口:
netstat -b -a
在 Windows 的命令提示符下。 這列出了正在使用的端口,並為您提供了使用每個端口的可執行文件。 您需要在管理員組中才能執行此操作。
你可能會得到這樣的東西:
TCP 192.168.0.1:8009 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]
TCP 192.168.0.1:8080 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]
TCP 192.168.0.1:8005 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]
打開任務管理器Ctrl + Shift + Esc ,並使用這些端口殺死Tomcat7.exe
或任何其他進程。
當項目中的其他人也使用與您使用的端口號相同的端口號時,就會發生這種情況! 雙擊 tomcat 服務器,將端口號更改為 8585 或其他任何內容。 代碼現在將開始運行!
如何使用 PID 終止 Windows 服務 -
netstat -ano
taskkill /f /pid 5760
謝謝
您的 Tomcat 可能已經在運行。 這就是為什么你有一個錯誤。 我以前也遇到過同樣的問題。 我很簡單地解決了它:
就這樣。
在Windows操作系統中,右鍵單擊任務欄->“啟動任務管理器”->“進程”,然后檢查java.exe或javaw是否正在運行,然后單擊它並結束進程,然后重新啟動Tom Cat服務器。
最簡單的解決方案
殺死多個端口的單行命令:
kill $(lsof -t -i:8005,8080,8009)
8005、8080 和 8009 是要釋放的端口。
或者,您可以在 linux 中嘗試sudo kill sudo lsof -t -i:8005
。
以上所有都不適合我。
然后按照Multiple contexts with the same path error running web service in Eclipse using Tomcat
刪除了重復的行然后我得到了另一個錯誤。
The server cannot be started because one or more of the ports are invalid. Open the server editor and correct the invalid ports.
以下Can't start tomcatv9.0 in Eclipse
然后就可以了。
Macbook 解決方案:
第一步:停止運行Java的服務器:
通過轉到應用程序 > 實用程序 > 活動監視器打開活動監視器。 或者簡單地按 CMD + 空格鍵並開始輸入 Activity Monitor。 查找運行 Java 的進程並通過在終端中提供以下命令將其終止
kill -STOP <PID>
其中 PID 是活動監視器中顯示的 Java 進程的進程 ID。 執行幾次並關閉並重新打開活動監視器以檢查 Java 是否未運行。
第 2 步:更改端口:
右鍵單擊 Eclipse 中的服務器,然后單擊“打開”。 將端口號從 8080 更改為 8081 或更大的值。
這應該有望啟動您的服務器。
在 windows 中打開任務管理器(Ctrl+Alt+Delete)和 go 到服務選項卡然后右鍵單擊 tomcat 和 select 停止然后在 eclipse 中啟動
參考以下博客《如何在不重啟電腦的情況下殺死tomcat》
http://stanicblog.blogspot.fr/2012/01/how-to-kill-apache-tomcat-without.html
希望這會在將來對某人有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.