tomcat 啓動 tomcat_dir/bin/startup.bat 一閃而過解決辦法及分析

轉自 ZNN

遇到很多次運行startup.bat後,一個窗口一閃而過的問題,但是從來沒去糾正怎樣修改配置纔是正確的,現在從網上查閱的資料整理如下:
tomcat在啓動時,會讀取環境變量的信息,需要一個CATALINA_HOME 與JAVA_HOME的信息,CATALINA_HOME即tomcat的主目錄,JAVA_HOME即java安裝的主目錄,jdk的主目錄。
首先,要在環境變量處,配置JAVA_HOME,注意變量值是jdk的主目錄,不是bin目錄,並且不要加分號,如圖:


然後,如果這樣配置,startup.bat還是一閃而過,可以右鍵點擊startup.bat,編輯,在文本的最後敲上pause,保存後重新運行startup.bat,這時候窗口不會再一閃而過,而是停留在桌面上(調試成功,把pause去掉即可)。

如果有錯誤信息,這時候會顯示出來,可以再根據它的錯誤提示,上網搜索對應的解決辦法,下面是在錯誤提示窗口遇到過的問題:
一、 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 $Id: setclasspath.bat 505241 2007-02-09 10:22:58Z jfclere $
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 大功告成。
二、Cannot find ""d:\apache-tomcat-6.0.32"\bin\setclasspath.bat"
這個時候,可能是CATALINA_HOME的值在某個地方被寫死了,像我的綠色版tomcat在bin文件下多了一個setenv.bat的文件,打開一看果然是在這裏面被寫死了CATALINA_HOME的路徑,這應該是爲了某種原因被人後加上的設置文件,把這個文件刪除之後,tomcat可以正常運行了。

這種情況,可以去看catalina.bat中的配置,如下圖,可能配置死的內容就在這個文件裏。

 

阻止startup.bat運行一閃而過——辦法二:

當用startup.bat啓動tomcat時,如果server.xml配置有錯誤,那麼startup.bat將閃一下就消失了,如果想讓命令窗口停住,好方便查看錯誤信息,則用如下方法修改:修改catalina.bat,找到裏面的:

:doStart

shift

if not "%OS%" == "Windows_NT" goto noTitle

set _EXECJAVA=start %_RUNJAVA%

goto gotTitle

:noTitle

set _EXECJAVA=start %_RUNJAVA%

:gotTitle

if not ""%1"" == ""-security"" goto execCmd

shift

echo Using Security Manager

set SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy

goto execCmd

將上面set _EXECJAVA=start %_RUNJAVA% 中的start去掉,就可以讓命令行出錯後不消失。set _EXECJAVA=start %_RUNJAVA% 的意識是重新啓動一個命令行窗口。去掉start後,則不會再重新啓動窗口,就達到了使命令行停住的效果。要在命令行中啓動startup.bat才能看到效果。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章