首頁 > 軟體

Java Tomcat 啟動閃退問題解決集

2023-03-23 22:01:05

Tomcat 啟動時出現黑畫面一閃而過的現象原因有很多,但通常都涉及幾個方法:

一、Java環境不對,Tomcat 不同版本需要的Java環境不同。

有時tomcat版本能夠正常安裝,但啟動時檢測到java 版本不對就會出現啟動黑畫面一閃而過的現象。例如:tomcat 10.1-M14版本能夠在java version “1.8.0_131”下用命令提示字元安裝成功,執行時卻出現啟動黑畫面一閃而過的現象,查了很久都沒有發現原因,最近官方出了安裝提示才明白問題出在執行需要Java 11 或更高版本環境。

  檢查Java版本是否適合安裝,按windows + R 啟用cmd命令,開啟命令提示字元,輸入“java -version”,回車,出現jdk版本,

如果不適合,請先安裝相應的Java版本。

當前Java SE Development Kit 最新版本是18.0.1.1

下載地址:Java Archive Downloads - Java SE 18
或http://openjdk.java.net/install/index.html

Java SE Development Kit 18.0.1.1

二、環境變數沒有設定好

 Tomcat需要設定好JRE才能正常執行。一般情況下,啟動閃屏崩潰是因為找不到JRE路徑,也就是說環境變數在安裝JDK的時候沒有設定好。

檢查jdk是否安裝,按windows + R 啟用cmd命令,開啟命令提示字元,進入命令提示字元,輸入“java -version”,回車,出現jdk版本,表示安裝成功,檢查版本是否合適,參考上文Java環境和tomcat版本對應關係。

檢測jdk設定有沒出錯,可以在tomcat安裝目錄bin下,startup.bat檔案最後加上pause命令

啟動執行tomcat,黑畫面會需要按任意鍵才結束如圖:

如能如圖正常顯示Using路徑,說明環境變數設定沒有問題,可跳過此步驟。

如發現問題,可檢查相關環境變數設定

① 設定環境變數,本機電腦—>屬性—>高階—>點選環境變數
②在系統變數裡點選新建—>新增變數:

③ 輸入變數名,變數值:
變數名:CATALINA_HOME
變數值:c:0 tomcat10_021
(變數值為tomcat安裝路徑,就是你剛剛解壓安裝tomcat的那個資料夾路徑)

④ 在系統變數裡找到Path,雙擊開啟:

新建環境變數,輸入:%CATALINA_HOME%bin

或在原來path列表中新增%CATALINA_HOME%lib;%CATALINA_HOME%bin

⑤開啟cmd,選擇以管理員的身份執行:(Windows鍵+R,輸入cmd,回車)

⑥進入tomcat安裝位置bin目錄,輸入:startup,回車

⑦開啟瀏覽器,輸入:http://localhost:8080/
(出現以下頁面,證明安裝設定成功。)

三、Tomcat埠被佔用

Tomcat預設需要使用8080等幾個埠,如果埠被佔用,tomcat啟動時就會崩潰,此時需要查詢是哪個程序佔用了8080埠。

  其實還可以通過檢視Tomcat終端輸出紀錄檔,找到Tomcat目錄下的logs目錄中catalina當天的紀錄檔,例如:catalina.2022-05-19.log檔案,如果在紀錄檔出錯資訊中看到:Address already in use: bind說明是埠佔用了。

1. 在cmd中檢視8080有沒有被佔用,找出佔用8080埠的程序

    按windows + R 啟用cmd命令,開啟命令提示字元,

  輸入:netstat -ano | findstr “8080”

如果埠沒有被佔用,就會顯示空值;

  如果你修改過tomca t埠設定,請查詢你的tomcat使用埠,例如,曾把tomcat埠修改成9080,此時查詢9080埠使用情況的命令為:

輸入:netstat -ano | findstr “9080”

 顯示為9080埠被PID值為15316的程序所佔用。

2. 接下來可以在工作管理員裡檢視該PID值程序號所對應的程序:

工作管理員選單欄中的點選【選項】——勾選” 【前端顯示】。

工作管理員選單欄中的點選-【檢視】-【選擇列】中勾選“PID”

發現佔用9080埠,PID值為15316的程序為java.exe

3、判斷該程序是否有用,如果沒有用,接著直接右鍵結束該程序即可。

或者,直接在命令提示框介面輸入要結束的PID值程序,例如:

要終止PID號為1196的程序,

可輸入:Taskkill/PID 1196

如果該程序確實有用不能結束,那麼可考慮更換tomcat使用的埠

開啟:Tomcat的安裝目錄 conf server.xml

找到下面這行程式碼:

    <Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

將8080埠改為你所需要的埠地址,例如,現在改為9080;

    <Connector port="9080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

4、在Tomcat目錄bin中找到“startup.bat”啟動Tomcat

5、然後開啟瀏覽器,輸入:http://localhost:9080,就可以發現Tomcat正常啟動了。

除8080埠外Tomcat還會佔用8005,8009和8443埠。如果這4個埠已被佔用,可以修改為使用其它埠。

四、組態檔編碼問題

Tomcat啟動時會呼叫幾個相關組態檔,如果裡面出現了不是UTF-8的字元,或者檔案儲存時的編碼格式不是UTF-8,tomcat編譯時就會出錯。就算是註釋行內也要仔細檢查。

出錯現象:

  Tomcat出現啟動時黑畫面一閃而過的現象,查詢catalina log紀錄檔,發現有以下出錯資訊:

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)

30-May-2022 23:57:18.015 嚴重 [main] org.apache.catalina.startup.Catalina.start 無法啟動伺服器,伺服器範例未設定

30-May-2022 23:57:44.468 警告 [main] org.apache.catalina.startup.Catalina.parseServerXml 無法從[此處路徑省略confserver.xml]載入伺服器設定

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 位元組的 UTF-8 序列的位元組 1 無效。

分析:

  檢視相關的confserver.xml檔案,發現是因為註釋了一些程式碼,在程式碼行里加入了中文說明,所以會出現無效UTF-8 序列位元組

解決方法:

刪掉中文,改成英語或拼音註釋。將檔案儲存支援UTF-8的格式。

重啟tomcat後故障解決。

五、啟動時需要的組態檔編寫出錯

所有相關的組態檔都要仔細檢測,語法格式等出錯都會出現tomcat啟動後閃退的現象。例如是否按規範設定JAVA_HOME變數名,路徑設定時 或 / 是否正確,注意路徑設定時後面不用多加“” 或者 “;”........

  有沒有和防火牆或其他app衝突。

  如果tomcat記憶體設定有誤也會導致tomcat閃退(在Catalina檔案裡,記憶體設定有錯誤),解決辦法:找到設定記憶體的語句,刪除錯誤,重新設定。

六、部分相關檔案丟失

       因意外或其他原因,tomcat 或jdk的一些jar檔案被打包成pack格式,造成tomcat 啟動缺jar包,報錯NoClassDefFound。
       解決:修復jdk,補回jar

七、免安裝的tomcat閃退

免安裝的tomcat雙擊startup.bat後,啟動視窗一閃而過,而且tomcat服務未啟動。

原因:

在啟動tomcat是,需要讀取環境變數和設定資訊,缺少了這些資訊,就不能登記環境變數,導致了tomcat的閃退。

解決辦法:

1.在已解壓的tomcat的bin資料夾下找到startup.bat,右擊->編輯。在檔案頭加入下面兩行:

SET JAVA_HOME=D:Javajdk1.6.0_10 (java jdk目錄)
SET TOMCAT_HOME=E:tomcat-6.0.35 (解壓後的tomcat檔案目錄)

2.同樣的。在已解壓的tomcat的bin資料夾下找到shutdown.bat,右擊->編輯。在檔案頭加入下面兩行:

SET JAVA_HOME=D:Javajdk1.6.0_10 (java jdk目錄)
SET TOMCAT_HOME=E:tomcat-6.0.35 (解壓後的tomcat檔案目錄)

3.將你要釋出/部署的web檔案複製到tomcat的webapps目錄下。

4.雙擊startup.bat即可啟動tomcat,成功啟動。

5.雙擊shutdown.bat即可停止tomcat。或者在已啟動的tomcat視窗中直接ctrl+c也可停止tomcat。

問題,
1. 免安裝的tomcat雙擊startup.bat後,啟動視窗一閃而過,而且tomcat服務未啟動。
2. 這裡有時候修了原本的web目錄,也會閃退

        原因是:在啟動tomcat是,需要讀取環境變數和設定資訊,缺少了這些資訊,就不能登記環境變數,導致了tomcat的閃退。

解決辦法一:

1. 去設定電腦的系統環境變數
        (1) 新增系統變數 TOMCAT_HOME=D:2Software​​​​​​tomcat-8.5.31apache-tomcat-8.5.31
        (2)  在path 目錄中新增         %OMCAT_HOME%bin

        注意: 當然這裡你的Java環境是已經配好的

解決辦法二:

1.在已解壓的tomcat的bin資料夾下找到startup.bat,右擊->編輯。在檔案頭加入下面兩行:

        set JAVA_HOME=D:2SoftwareJavajdk-11
        set TOMCAT_HOME=D:2Software​​​​​​tomcat-8.5.31apache-tomcat-8.5.31

2.同樣的。在tomcat的bin資料夾下找到shutdown.bat,右擊->編輯。在檔案頭加入下面兩行:

        set JAVA_HOME=D:2SoftwareJavajdk-11
        set TOMCAT_HOME=D:2Softwaretomcat-8.5.31apache-tomcat-8.5.31

3.將你要釋出/部署的web檔案複製到tomcat的webapps目錄下。
4.雙擊startup.bat即可啟動tomcat,成功啟動。

** 有時候如果啟動閃退,只要執行一下 shutdown.bat 也可以解決下次啟動時的閃退問題

八、修改組態檔setclasspath.bat

有些時候,我們可以通過修改組態檔setclasspath.bat解決tomcat閃退問題

方法:

1、----》進入Tomcat目錄----》進入在bin目錄

2、----》找到setclasspath.bat檔案----》右鍵點選編輯

3、在該檔案開頭中加入 java_home和jar_home 的具體路徑設定

4、再次啟動Tomcat,執行startup.bat

九、等待更新

一種找到導致tomcat閃退的原因的方法:

1、windows+R----》輸入cmd----》進入命令提示字元視窗

2、輸入路徑----》進入到tomcat的bin目錄

3、----》輸入catalina.bat run 回車

4、----》檢視具體錯誤資訊

只要找到錯誤原因,就可以針對性的解決問題。

tomcat出錯,每個人遇到的情況因軟硬體問題都會有不同,這裡只是總結出幾大類常遇到的情況,希望能給你一點啟發,慢慢來,修改前多做備份,會找到原因解決問題的,一起加油學習!

以上就是Tomcat 啟動閃退問題解決集(八大類詳細)的詳細內容,更多關於解決tomcat閃退的資料請關注it145.com其它相關文章!


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