今天在虛拟機上裝tomcat6 啟動時候遇到問題:指令視窗閃一下就消失
在cmd裡面運作startup.bat 得到
the java_home environment variable is not defined correctly
This environment variable is needed to run this program
NB: java_home should point to a jdk not a jre
意思是JAVA_HOME應該指向JDK而不是JRE
首先檢查環境:
cmd裡運作
輸入javac跟java指令 正常
輸入 if not exist "%JAVA_HOME%\bin\java.exe" echo "%JAVA_HOME%\bin\java.exe" 回車
結果:"C:\Program Files\Java\bin\java.exe" 也并沒有分号,說明環境配置正确
那就應該是tomcat的問題,在網上查找了幾種方式:
一:在catalina.bat中的
set CURRENT_DIR=%cd%後加入一行
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_13(因人而異)
将你的目前JDK目錄寫死進去,運作成功,這樣也省得你Tomcat自個兒去找了。這個方法其實很野蠻,但總比沒辦法好。 測試不成功
二:在setclasspath.bat的頭部定義了JAVA_HOME和JRE_HOME的值,那麼在這裡手動設定JAVA_HOME變量
rem ---------------------------------------------------------------------------
rem Set CLASSPATH and Java options
rem
rem $Id: setclasspath.bat 505241 2007-02-09 10:22:58Z jfclere $
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_05
set JRE_HOME=C:\Program Files\Java\jre1.5.0_05
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檔案,在@echo off
if "%OS%" == "Windows_NT" setlocal 後加一句:
java -jar -Duser.dir="d:tomcat_6.0.14" "d:tomcat_6.0.14\bin\bootstrap.jar" start
儲存,運作startup.bat,搞定。這個方法貌似是最暴力的方法。。。直接指定你tomcat路徑然後直接啟動服務。。。 測試成功
(網上搜到的)其他一些關于tomcat啟動時的奇怪問題:
a.Tomcat無法從"開始"中啟動,但可以在startup.bat中啟動
JDK版本過低
b.啟動的時候,加載資訊的提示界面在螢幕上停留幾秒鐘就消失了,同時,tomcat的應用程式也自動關閉
在server.xml的最後,/host之上,應該寫上的是:content
c.TOMCAT啟動時有一些顯示,但仍會自動關閉,無法啟動.
可能是位址被占用,運作桌面上的"關閉TOMCAT"快捷方式,執行完畢後再啟動TOMCAT.
d.TOMCAT啟動時一閃而過,無法啟動.
可能是端口被占用,可找到TOMCAT的安裝目錄下的SERVER.XML檔案,如..\EAM2003\conf\SERVER.XML,用記事本打開此檔案,查找8080,如果找到,就将8080改為8088.
e.TOMCAT能正常啟動,可見到登入界面,但登入不進系統
可能是IE的設定問題,将所有設定回複成預設設定,關閉"上網助手"或其他IE插件的"攔截彈出視窗"的功能.
最後:
解讀startup.bat檔案
@echo off //DOS在運作批處理時,會依次執行批進行中的每條指令,并且會在顯示器上顯示,如果你不想讓它們顯示,可以加一個“echo off”。當然,“echo off”也是指令,它本身也會顯示,如果連這條也不顯示,就在前面加個“@”。
if "%OS%" == "Windows_NT" setlocal //判斷目前系統是否是window系統
rem --------------------------------------------------------------------------- //rem 是注釋(下同)
rem Start script for the CATALINA Server
rem $Id: startup.bat 302918 2004-05-27 18:25:11Z yoavs $
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd% //設定目前目錄
if not "%CATALINA_HOME%" == "" goto gotHome //如果設定了CATALINA_HOME環境變量 ,就直接到下面的gotHome處
set CATALINA_HOME=%CURRENT_DIR% //如果沒有設定CATALINA_HOME,就設定CATALINA_HOME為目前目錄(其實這裡她假設你進入tomcat的安裝目錄)
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome//判斷一下catalina.bat是否找到了,找到了就直接到下面的gotHome處
cd .. //這裡他是假設你開始已經進入到了tomcat的bin目錄,是以就退到上一級目錄
set CATALINA_HOME=%cd%//現在再設定CATALINA_HOME為tomcat的安裝目錄
cd %CURRENT_DIR% //這裡是進入dos的目前目錄
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome //再次判斷catalina.bat是否找到了,找到了就直接到下面的okHome處,沒有的話,就隻能提示你啦!
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:okHome
set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat //設定要執行的檔案
rem Check that target executable exists
if exist "%EXECUTABLE%" goto okExec //再次判斷catalina.bat是否找到了,找到了就直接到下面的okExec處,沒有的話,就提示。
echo Cannot find %EXECUTABLE%
echo This file is needed to run this program
:okExec
rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS= //這裡是設定參數
:setArgs
if ""%1""=="""" goto doneSetArgs //判斷參數是否加入完成
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 //将參數組成一行,接在後面
shift
goto setArgs
:doneSetArgs
call "%EXECUTABLE%" start %CMD_LINE_ARGS% //執行catalina.bat,最好将這行改為:echo "%EXECUTABLE%" start %CMD_LINE_ARGS% 以便閱讀、了解本檔案的作用