天天看點

tomcat啟動批處理——setclasspath.bat

除了上面兩個批處理,還有一個比較重要的腳本,即是setclasspath.bat,它主要負責尋找、檢查JAVA_HOME和JRE_HOME兩個變量。

********************************************************************************************

if ""%1"" ==""debug"" goto needJavaHome

if not "%JRE_HOME%" == "" gotogotJreHome

if not "%JAVA_HOME%" == "" gotogotJavaHome

goto exit

:needJavaHome

if "%JAVA_HOME%" == "" gotonoJavaHome

if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

if not exist "%JAVA_HOME%\bin\javaw.exe"goto noJavaHome

if not exist "%JAVA_HOME%\bin\jdb.exe" gotonoJavaHome

if not exist "%JAVA_HOME%\bin\javac.exe"goto noJavaHome

set "JRE_HOME=%JAVA_HOME%"

goto okJava

:noJavaHome

:gotJavaHome

:gotJreHome

if not exist "%JRE_HOME%\bin\java.exe" goto noJreHome

if not exist "%JRE_HOME%\bin\javaw.exe" goto noJreHome

:noJreHome

:okJava

if not "%JAVA_ENDORSED_DIRS%" == ""goto gotEndorseddir

set"JAVA_ENDORSED_DIRS=%CATALINA_HOME%\endorsed"

:gotEndorseddir

set _RUNJAVA="%JRE_HOME%\bin\java"

set _RUNJDB="%JAVA_HOME%\bin\jdb"

goto end

:exit

exit /b 1

:end

exit /b 0

判斷是否在debug模式下, 此模式下必須要設定JAVA_HOME環境變量,即跳到needJavaHome位置。接着分别判斷JRE_HOME、JAVA_HOME兩個環境變量,不為空則分别跳到gotJreHome、gotJavaHome位置。needJavaHome做的事情包括檢查JAVA_HOME環境變量是否為空,不為空的話它的bin目錄下是否存在java.exe、javaw.exe、jdb.exe、javac.exe等檔案,這些檔案都是運作時必要的執行檔案,最後把JAVA_HOME變量的值賦給JRE_HOME。這裡有必要說明一下exit标簽跟end标簽的不同,exit  /b  1 即退出目前指令視窗并傳回值1,exit /b  0 則是退出目前指令視窗并傳回0,0表示在這段腳本運作中沒有出現錯誤。是以如果一切運作正常的話,最終會得到JAVA_ENDORSED_DIRS="%CATALINA_HOME%\endorsed",_RUNJAVA="%JRE_HOME%\bin\java",_RUNJDB="%JAVA_HOME%\bin\jdb"。

<a target="_blank" href="https://item.jd.com/12185360.html">點選訂購作者《Tomcat核心設計剖析》</a>