Tomcat(8005,8080,8009)埠占用問題常見原因及解決方法

小鷹資訊科技服務部發表於2012-02-08

在企業版Eclipse中,在已經啟動了Tomcat伺服器後,準備執行頁面或Servlet時,有時會出現這樣的關於Tomcat伺服器埠占用的問題:
“Several ports (8005, 8080, 8009) required by Tomcat v6.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).”



錯誤資訊的大意是說Tomcat執行所需的那三個埠被被的程式佔用了。
        我個人遇到過的的原因大概有以下幾種:

情況一:點選執行的時候沒有選中頁面或Servlet視窗的標籤
情況如下圖:

 

                      

仔細觀察可知,左圖其實並沒有選中要執行的Servlet視窗的標籤,因為標籤是白色的,此時點選執行按鈕的話相當於再啟動一個伺服器程式,埠當然是被原來那個已經啟動的伺服器給佔了。而右圖中Servlet視窗標籤是藍色的,說明已經被選中了,點選綠色的執行按鈕後自然就是將這個Servlet裝入已經啟動的那個伺服器執行,所以不會有像剛才那種埠占用的情況。


情況二:在硬碟的兩個地方都有Tomcat
        下面說說我碰到過的另一種情況,以前在D盤安裝過一個Tomcat,後來因為有段時間不怎麼用,就忽略了。再後來又開始做練習的時候,在C盤裝了另一個Tomcat,並且在Eclipse中配置的時候也是預設選擇了C盤的那個Tomcat。悲劇的是,因為原來在D盤的那個Tomcat我設成了開機啟動,所以埠一開始就被它佔著。因此,在Eclipse中啟動Tomcat(C盤那個)時,就出現了埠占用的錯誤提示。

           

後來把D盤的Tomcat刪除後,在Eclipse中就能正常執行頁面了。

情況三:(8005,8080,8009)三個埠中的至少一個被其他程式佔用
           這種情況很難一下子看出來,不過反正就是要找出到底是哪個程式佔用了這幾個埠。可以在控制檯裡用“netstat -abn”命令檢視正在執行的程式所佔用的埠以及相關資訊:



可以看到,是"javaw.exe"這個程式佔用了8009和8080埠,在資源管理器中把它結束掉就可以了。



當然,還可能有其他情況導致的原因。慢慢探索吧。

相關文章