首頁 > 軟體

startup.bat啟動Tomcat閃退問題原因及解決

2022-04-11 16:00:35

出現問題:

安裝了Tomcat之後,開始用著還好好的。莫名其妙的就很突然出現了一些玄學問題,某一次開始我雙擊了startup.bat啟動Tomcat時我的黑視窗就很不給面子的執行著執行著就閃退了,隱約間能看到個異常,可剛看清楚一個caused by...黑視窗就已經關閉了。經歷了重啟電腦等常規解決問題的思路後依舊無法解決。

分析問題

既然問題出現在這個啟動後閃退,那就去看一眼啟動時都做了什麼?用記事本開啟startup.bat,會發現一行指令碼是這樣寫的:

set "EXECUTABLE=%CATALINA_HOME%bincatalina.bat"

看得出它存取了本目錄下的catalina.bat指令碼,那就記事本開啟catalina.bat,此時又發現裡面出現了這些內容:

rem Get standard Java environment variables
if exist "%CATALINA_HOME%binsetclasspath.bat" goto okSetclasspath
echo Cannot find "%CATALINA_HOME%binsetclasspath.bat"
echo This file is needed to run this program
goto end
:okSetclasspath
call "%CATALINA_HOME%binsetclasspath.bat" %1
if errorlevel 1 goto end

這說明catalina.bat又存取了該目錄下的setclasspath.bat,而記事本開啟setclasspath.bat後又發現它又存取了catalina.bat

綜上發現startup.bat啟動流程為:startup->catalina->setclasspath->catalina

閃退原因:

可見這三個檔案一個都不能出問題。分析這三個檔案得出閃退問題主要原因

原因一:java環境變數出問題了

從啟動指令碼中看得出Tomcat多次存取了環境變數資訊,其中也包括java環境(畢竟Tomcat原碼也是java啊)。故要先去檢查jdk的環境設定
注意:CATALINA_HOME是Tomcat的環境,你可以選擇不設定,不過這樣的話你就只能在bin目錄下啟動Tomcat了,換句話來講,設定完Tomcat環境後你可以把startup.bat複製到其他地方雙擊啟動。

原因二:埠佔用

如果Tomcat已經被啟動或者8080埠被佔用,這自然是不允許的。

你可以直接存取localhost:8080看能否存取Tomcat,如果可以那就說明是已經開啟過了的,你可以雙擊shutdown.bat進行關閉。

或者你可以在黑視窗中執行netstat -ano | findstr "8080"檢視8080埠狀態,如果是TIME_WAIT則說明未被佔用。

原因三:你的Tomcat不乾淨了

到現在還沒解決,那就有可能是你所下載的Tomcat是一些綠色版、無敵版、xx版等閹貨或畸形貨。此時就可在記事本開啟startup.bat,在指令碼最後面一行加上pause,儲存後啟動進行斷點偵錯了。(不一定非得像我圖片中加在倒數第二行,最後一行應該也可以,只要不放在前面的邏輯中就行)。

此時啟動效果和之前沒有區別,只是出了問題後不再會立刻閃退,而是你在視窗中按任意鍵後才會退出。OK!現在你就研究屬於你的bug吧(記得解決完問題後把pause刪掉)!

到此這篇關於startup.bat啟動Tomcat閃退問題原因及解決的文章就介紹到這了,更多相關startup.bat啟動Tomcat閃退內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com