關於tomcat不能啟動的問題(NB:JAVA_HOME should point to a JDK not a JRE)


今天在虛擬機上裝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里運行

輸入javacjava命令 正常  

輸入  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 $
rem ---------------------------------------------------------------------------

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

 

rem $Id: startup.bat 302918 2004-05-27 18:25:11Z yoavs $

 

rem ---------------------------------------------------------------------------

 

 

 

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

 

goto end

 

: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%       以便閱讀、理解本文件的作用

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM