1. 程式人生 > >Tomcat啟動一閃而過就消失的原因及解決方法

Tomcat啟動一閃而過就消失的原因及解決方法

引言:Tomcat啟動一閃而過怎麼辦?

這成為了許多剛接觸tomcat開發環境工作者的一個大問題,許多使用者朋友都不知道是因為什麼問題導致出現這種情況,下面就一起來了解一下吧。

原因一:

 (1)首先要搞明白啟動不起來的原因。方法是在命令列下,執行startup.bat檔案,這樣程式就不會一閃而過,而會將啟動不起來的原因列印到視窗上。

(2)在命令列下啟動tomcat的方法讀者應該都很清楚,大體就是:cmd啟動命令列視窗→通過cd命令到tomcat的bin目錄下→執行startup.bat。

(3)通過命令列的提示看到,這是因為電腦上沒有配置JAVA_HOME或者JRE_HOME導致的。那麼下面新增上JAVA_HOME和JRE_HOME。具體步驟為計算機→屬性→環境變數,然後新增系統變數;

(4)新增完JAVA_HOME和JRE_HOME兩個系統變數之後,在將這兩個變數放到path系統變數中,方法是,在path變數值的後面直接追加 【;%JAVA_HOME%;%JRE_HOME%】注意!分號是環境變數的分割符號,不可少。

原因二:

雙擊tomcat的bin目錄下的startup.bat時一閃而過時,可以右鍵startup.bat找一個文字編輯器開啟,然後在文字的最後敲上pause,儲存後重新執行startup.bat,這時候視窗會留在桌面上(除錯成功,把pause去掉即可)。我們可以看到DOS窗口裡有錯誤資訊。

1. The JRE_HOME environment variable is not defined correctly This environment variableis needed to run this program 原因:以前版本的tomcat需要JDK,現在的tomcat(本人的是7.0)只要有JRE就可以。 如果你裝的tomcat的是解壓版的(免安裝的)那麼則需要自己手動配置JRE_HOME 這個環境變數,否則,就會出現上面的錯誤。 解決辦法:右擊 我的電腦 - 高階 - 環境變數, 在系統變數中 新建 變數名:JRE_HOME 變數值:C:\Program Files\Java\jre7(根據你自己的JDK安裝目錄尋找JRE)

2.Neither the JAVA_HOME nor the JRE_HOME environment variable is defined Tomcat的startup.bat,它呼叫了catalina.bat,而catalina.bat則呼叫了setclasspath.bat,只要在setclasspath.bat的開頭宣告環境變數(紅色兩行)就可以了,原因是後來較新版本安裝完不會自動登記環境變數JAVA_HOME,JRE_HOME。
給setclasspath.bat的開頭新增紅色標記部分,如下: rem ___________________________ rem Set CLASSPATH and Java options rem rem rem ____________________________ set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_20 set JRE_HOME=C:\Program Files\Java\jre6 rem Make sure prerequisite environment variables are set if not “%JAVA_HOME%” == “” goto gotJdkHome if not “%JRE_HOME%” == “” goto gotJreHome echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined echo At least one of these environment variable is needed to run this program goto exit
這樣在每次執行startup.bat時就自動註冊了JAVA_HOME,JRE_HOME。 執行startup.bat,提示“資訊:Server startup in xxxxx ms” OK 大功告成。

3. Cannot find “”d:\apache-tomcat-6.0.32”\bin\setclasspath.bat”

這個時候,可能是CATALINA_HOME的值在某個地方被寫死了,像我的綠色版tomcat在bin檔案下多了一個setenv.bat的檔案,開啟一看果然是在這裡面被寫死了CATALINA_HOME的路徑,這應該是為了某種原因被人後加上的設定檔案,把這個檔案刪除之後,tomcat可以正常運行了。

原因三:

如果你的環境配置沒有錯,也沒有上述兩種錯誤那麼可能你已經啟動了一個Tomcat,這樣兩個Tomcat會產生衝突。你可以在com中檢視8080是否被佔用:

(1)我們可以使用如下命令來找出哪個程序佔用5037這個埠

        netstat -ano | findstr "5037"

(2)最後一列為佔用5037埠的程序號,PID為9060,那麼我們可以在工作管理員裡檢視改程序號所對應的程序,直接右擊結束該程序即可。或者使用上面提到的taskkill命令,它主要是用來批量刪除某些程序,當然,也可以用來刪除一個程序,使用方法如下:

taskkill /PID 9060 /F        其中,/F主要是用來強制刪除。

你也可以檢視Tomcat自帶的列印日誌在你的Tomcat的logs資料夾下如果出現了

七月 04, 2018 10:40:20 上午 org.apache.catalina.core.StandardService initInternal

嚴重: Failed to initialize connector [Connector[HTTP/1.1-8080]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]

類似的錯誤可能已經運行了一個Tomcat你可以在服務中把它終止掉,然後再執行自己的Tomcat就可以了。
 

原文連結:https://blog.csdn.net/qq904069486/article/details/80909780