Tomcat調(diào)試報(bào)錯(cuò)無法打開調(diào)試器端口怎么辦?教你快速解決
部署項(xiàng)目、啟動(dòng) Tomcat 調(diào)試時(shí),是不是經(jīng)常遇到這樣的報(bào)錯(cuò),直接卡殼無法繼續(xù)?
錯(cuò)誤運(yùn)行'Tomcat 8.5.35':無法打開調(diào)試器端口 (127.0.0.1:55849): java.net.SocketException "Interrupted function c"
尤其是用 IDEA、Eclipse 啟動(dòng) Tomcat 調(diào)試時(shí),這個(gè)報(bào)錯(cuò)出現(xiàn)頻率超高,看似復(fù)雜,其實(shí)核心原因很明確——端口被占用、進(jìn)程沖突,或者配置異常。
今天就一次性搞定!不僅覆蓋 Tomcat 本身的解決辦法,還補(bǔ)充 Wildfly 環(huán)境下的專屬解決方案,不管你用哪種環(huán)境,跟著做都能快速解決,新手也能一步到位。
先搞懂:這個(gè)報(bào)錯(cuò)到底啥意思?
報(bào)錯(cuò)的核心含義很直白,翻譯過來就是:
無法打開 Tomcat 調(diào)試器的指定端口(比如示例中的 127.0.0.1:55849),出現(xiàn)了 socket 中斷異常
劃重點(diǎn):報(bào)錯(cuò)的核心原因主要有 3 類,也是我們優(yōu)先排查的方向:
- Java 進(jìn)程沖突:之前啟動(dòng)的 Tomcat、Java 進(jìn)程沒徹底關(guān)閉,占用了調(diào)試端口;
- Tomcat 多實(shí)例沖突:同時(shí)運(yùn)行了兩個(gè)及以上 Tomcat,端口相互占用;
- 端口被其他程序占用:調(diào)試端口(如 55849)被電腦上其他軟件占用,導(dǎo)致 Tomcat 無法使用。
另外要注意:不僅 Tomcat 會(huì)報(bào)這個(gè)錯(cuò),Wildfly 環(huán)境下運(yùn)行項(xiàng)目時(shí),也可能出現(xiàn)類似的調(diào)試端口報(bào)錯(cuò),后面會(huì)專門補(bǔ)充專屬解決辦法,記得看到最后~
第一部分:Tomcat 環(huán)境下,3 步解決報(bào)錯(cuò)
不管你用的是 Tomcat 8.5、9.0 還是其他版本,只要出現(xiàn)這個(gè)調(diào)試端口報(bào)錯(cuò),按下面 3 個(gè)步驟排查,基本都能解決,全程無復(fù)雜操作!
第一步:關(guān)閉所有 Java 進(jìn)程(最常用、最有效)
很多時(shí)候,報(bào)錯(cuò)的根源是“之前啟動(dòng)的 Tomcat 沒徹底關(guān)閉”,殘留的 Java 進(jìn)程占用了調(diào)試端口,只需徹底關(guān)閉即可:
- 按下
Ctrl + Shift + Esc,打開電腦的任務(wù)管理器; - 切換到 「進(jìn)程」(或「詳細(xì)信息」)標(biāo)簽頁,找到所有名稱包含
java.exe、javaw.exe的進(jìn)程; - 右鍵點(diǎn)擊這些進(jìn)程,選擇**「結(jié)束任務(wù)」**,逐一關(guān)閉所有 Java 相關(guān)進(jìn)程(不用擔(dān)心,關(guān)閉后不會(huì)影響電腦正常運(yùn)行);
- 關(guān)閉完成后,重新啟動(dòng) Tomcat 調(diào)試,大概率能直接解決報(bào)錯(cuò)。
提醒:如果結(jié)束進(jìn)程后還是報(bào)錯(cuò),繼續(xù)下一步排查。
第二步:檢查是否運(yùn)行了多個(gè) Tomcat
如果你的電腦上安裝了多個(gè) Tomcat(比如一個(gè)用于測試、一個(gè)用于開發(fā)),或者不小心啟動(dòng)了兩個(gè)相同的 Tomcat 實(shí)例,就會(huì)出現(xiàn)端口沖突:
- 打開任務(wù)管理器,查看「進(jìn)程」標(biāo)簽頁,確認(rèn)是否有多個(gè) Tomcat 相關(guān)進(jìn)程(或多個(gè)
java.exe進(jìn)程,對應(yīng)不同 Tomcat); - 如果有,全部結(jié)束這些進(jìn)程,然后只啟動(dòng)一個(gè)需要使用的 Tomcat 實(shí)例;
- 另外可以檢查 Tomcat 的啟動(dòng)腳本(
startup.bat),確認(rèn)沒有重復(fù)啟動(dòng)的情況。
第三步:檢查調(diào)試端口是否被占用
如果上面兩步都沒解決,說明調(diào)試端口(比如報(bào)錯(cuò)中的 55849)被電腦上其他軟件占用了,需要排查并釋放端口:
以管理員身份打開 CMD(按 Win + R,輸入 cmd,右鍵選擇「以管理員身份運(yùn)行」);
輸入以下命令(將 55849 替換為你的報(bào)錯(cuò)中顯示的端口號):
netstat -ano | findstr "55849"
命令執(zhí)行后,會(huì)顯示占用該端口的進(jìn)程 ID(最后一列數(shù)字);
回到任務(wù)管理器,切換到「詳細(xì)信息」,找到對應(yīng)進(jìn)程 ID 的程序,右鍵結(jié)束任務(wù),釋放端口;
端口釋放后,重新啟動(dòng) Tomcat 調(diào)試,報(bào)錯(cuò)即可解決。
第二部分:Wildfly 環(huán)境下,額外補(bǔ)充解決辦法
很多小伙伴在 Wildfly 環(huán)境下運(yùn)行項(xiàng)目時(shí),也會(huì)遇到類似的“無法打開調(diào)試器端口”報(bào)錯(cuò),除了上面的 3 個(gè)通用辦法,還需要額外檢查以下 3 點(diǎn),才能徹底解決:
(1)修改standalone.xml配置文件
找到 Wildfly 的安裝目錄,依次打開
standalone→configuration文件夾;
在文件夾中找到 standalone.xml 文件,用 VSCode、記事本、Notepad++ 等文本編輯器打開;

滾動(dòng)到文件最后幾行,刪除 <deployments> 標(biāo)簽中的所有內(nèi)容(注意不要?jiǎng)h除標(biāo)簽本身,只刪除標(biāo)簽內(nèi)的內(nèi)容);

保存文件,關(guān)閉編輯器。
(2)刪除standalone中的tmp文件夾
回到 Wildfly 的 standalone 文件夾(和 configuration 同級);
找到名為 tmp 的文件夾,直接右鍵刪除(這個(gè)文件夾是 Wildfly 的臨時(shí)文件,刪除后會(huì)自動(dòng)重建,不會(huì)影響項(xiàng)目);

刪除完成后,重啟 Wildfly 服務(wù)。
(3)刪除deployments中無關(guān)的包
在 Wildfly 的 standalone 文件夾中,打開 deployments 文件夾;
刪除文件夾中所有無關(guān)的項(xiàng)目包、冗余包(只保留當(dāng)前需要運(yùn)行的項(xiàng)目包即可);
避免無關(guān)包占用端口、導(dǎo)致配置沖突,刪除后重新啟動(dòng) Wildfly 即可。

避坑提醒(新手必看,少走彎路)
很多人按步驟操作,還是會(huì)踩坑,這 4 個(gè)細(xì)節(jié)一定要注意,避免白忙活:
- 結(jié)束 Java 進(jìn)程要徹底:不要只關(guān)閉 Tomcat 窗口,一定要在任務(wù)管理器中結(jié)束
java.exe、javaw.exe進(jìn)程,否則進(jìn)程會(huì)殘留; - 端口號不要輸錯(cuò):排查端口占用時(shí),一定要輸入報(bào)錯(cuò)中顯示的端口號(比如 55849),輸錯(cuò)會(huì)找不到占用進(jìn)程;
- Wildfly 配置不要亂刪:修改
standalone.xml時(shí),只刪除<deployments>標(biāo)簽內(nèi)的內(nèi)容,不要誤刪其他配置,否則 Wildfly 無法啟動(dòng); - 操作后必須重啟服務(wù):不管是 Tomcat 還是 Wildfly,修改配置、刪除文件后,一定要重啟服務(wù),配置才能生效。
總結(jié)
其實(shí)“無法打開調(diào)試器端口”報(bào)錯(cuò),核心就是 「進(jìn)程沖突」「端口占用」「配置異?!?/strong>,記住核心解決思路:
- Tomcat 環(huán)境:關(guān) Java 進(jìn)程 → 查多 Tomcat → 查端口占用;
- Wildfly 環(huán)境:加 3 步操作(改配置 → 刪 tmp → 刪無關(guān)包)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
centos環(huán)境下使用tomcat 部署SpringBoot的war包
這篇文章主要介紹了centos環(huán)境下使用tomcat 部署SpringBoot的war包的相關(guān)資料,本文通過實(shí)例代碼給大家講解的很詳細(xì),對tomcat 部署SpringBoot 的war包相關(guān)知識感興趣的朋友一起看看吧2021-05-05
tomcat啟動(dòng)startup.bat一閃而過問題的解決方法【親測有效】
這篇文章主要介紹了tomcat啟動(dòng)startup.bat一閃而過問題的解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05
tomcat部署簡單的html靜態(tài)網(wǎng)頁的方法
這篇文章主要介紹了tomcat部署簡單的html靜態(tài)網(wǎng)頁的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
Tomcat6.0與windows 2003 server 的IIS服務(wù)器集成
本例主要講解Tomcat6.0與windows 2003 server 的IIS服務(wù)器集成的問題,用到的工具版 本如下:jdk是6.0、Tomcat 6.0、windows 2003 server 的IIS。2009-08-08
Tomcat實(shí)現(xiàn)session共享(session 會(huì)話復(fù)制)
這篇文章主要介紹了Tomcat實(shí)現(xiàn)session共享,其實(shí)就是session 會(huì)話復(fù)制的相關(guān)方法,需要的朋友可以參考下2017-09-09
eclipse配置Tomcat和Tomcat出現(xiàn)無效端口解決辦法
本文主要介紹了eclipse配置Tomcat和Tomcat出現(xiàn)無效端口解決辦法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12

