startup.bat啟動(dòng)Tomcat閃退問(wèn)題原因及解決
目錄
- 出現(xiàn)問(wèn)題:
- 分析問(wèn)題
- 閃退原因:
- 原因一:java環(huán)境變量出問(wèn)題了
- 原因二:端口占用
- 原因三:你的Tomcat不干凈了
出現(xiàn)問(wèn)題:
安裝了Tomcat之后,開始用著還好好的。莫名其妙的就很突然出現(xiàn)了一些玄學(xué)問(wèn)題,某一次開始我雙擊了startup.bat啟動(dòng)Tomcat時(shí)我的黑窗口就很不給面子的運(yùn)行著運(yùn)行著就閃退了,隱約間能看到個(gè)異常,可剛看清楚一個(gè)caused by...黑窗口就已經(jīng)關(guān)閉了。經(jīng)歷了重啟電腦等常規(guī)解決問(wèn)題的思路后依舊無(wú)法解決。
分析問(wèn)題
既然問(wèn)題出現(xiàn)在這個(gè)啟動(dòng)后閃退,那就去看一眼啟動(dòng)時(shí)都做了什么?用記事本打開startup.bat,會(huì)發(fā)現(xiàn)一行腳本是這樣寫的:
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
看得出它訪問(wèn)了本目錄下的catalina.bat腳本,那就記事本打開catalina.bat,此時(shí)又發(fā)現(xiàn)里面出現(xiàn)了這些內(nèi)容:
rem Get standard Java environment variables
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"
echo This file is needed to run this program
goto end
:okSetclasspath
call "%CATALINA_HOME%\bin\setclasspath.bat" %1
if errorlevel 1 goto end
這說(shuō)明catalina.bat又訪問(wèn)了該目錄下的setclasspath.bat,而記事本打開setclasspath.bat后又發(fā)現(xiàn)它又訪問(wèn)了catalina.bat。
綜上發(fā)現(xiàn)startup.bat啟動(dòng)流程為:startup->catalina->setclasspath->catalina

閃退原因:
可見這三個(gè)文件一個(gè)都不能出問(wèn)題。分析這三個(gè)文件得出閃退問(wèn)題主要原因
原因一:java環(huán)境變量出問(wèn)題了
從啟動(dòng)腳本中看得出Tomcat多次訪問(wèn)了環(huán)境變量信息,其中也包括java環(huán)境(畢竟Tomcat原碼也是java啊)。故要先去檢查jdk的環(huán)境配置。
注意:CATALINA_HOME是Tomcat的環(huán)境,你可以選擇不配置,不過(guò)這樣的話你就只能在bin目錄下啟動(dòng)Tomcat了,換句話來(lái)講,配置完Tomcat環(huán)境后你可以把startup.bat復(fù)制到其他地方雙擊啟動(dòng)。
原因二:端口占用
如果Tomcat已經(jīng)被啟動(dòng)或者8080端口被占用,這自然是不允許的。
你可以直接訪問(wèn)localhost:8080看能否訪問(wèn)Tomcat,如果可以那就說(shuō)明是已經(jīng)開啟過(guò)了的,你可以雙擊shutdown.bat進(jìn)行關(guān)閉。
或者你可以在黑窗口中執(zhí)行netstat -ano | findstr "8080"查看8080端口狀態(tài),如果是TIME_WAIT則說(shuō)明未被占用。
原因三:你的Tomcat不干凈了
到現(xiàn)在還沒解決,那就有可能是你所下載的Tomcat是一些綠色版、無(wú)敵版、xx版等閹貨或畸形貨。此時(shí)就可在記事本打開startup.bat,在腳本最后面一行加上pause,保存后啟動(dòng)進(jìn)行斷點(diǎn)調(diào)試了。(不一定非得像我圖片中加在倒數(shù)第二行,最后一行應(yīng)該也可以,只要不放在前面的邏輯中就行)。

此時(shí)啟動(dòng)效果和之前沒有區(qū)別,只是出了問(wèn)題后不再會(huì)立刻閃退,而是你在窗口中按任意鍵后才會(huì)退出。OK!現(xiàn)在你就研究屬于你的bug吧(記得解決完問(wèn)題后把pause刪掉)!
到此這篇關(guān)于startup.bat啟動(dòng)Tomcat閃退問(wèn)題原因及解決的文章就介紹到這了,更多相關(guān)startup.bat啟動(dòng)Tomcat閃退內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

網(wǎng)公網(wǎng)安備