2013-08-27 106 views
11

我嘗試設置JAVA_HOME路徑,因爲我的Tomcat服務器正在查找它。我試圖設置它,但它似乎不工作,並導致我的錯誤。我試圖用Tomcat 6 JAVA_HOME

set JAVA_HOME="C:\Program Files (x86)\Java\jre7" 

這是在

的setclasspath.bat
set JAVA_HOME="C:\Program Files (x86)\Java\jre7" 
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 

開始當我設置這個和運行設置在在的setclasspath.bat JAVA「的startup.bat啓動」它顯示

文件是意外在這個時候

你能幫助我嗎?

+0

嘗試設置JAVA_HOME爲系統環境變量,進入系統設置高級選項卡,點擊新建並設置JAVA_HOME。 –

+3

您的路徑包含空格,這不適用於.BAT文件。你必須用引號括住你的路徑。 'set JAVA_HOME =「C:\ Program Files(x86)\ Java \ jre7」'。然而,你指向一個JRE,爲了使tomcat正常工作,你必須指向一個JDK(tomcat需要一個編譯器,這不是JRE的一部分,而是JDK的一部分)。 –

回答

-3

您正指向JRE。你需要指向一個JDK,它給出了你的JRE的位置可能類似C:\Program Files (x86)\Java\jdk1.6.0_26或類似的東西。或者,如果您只安裝了JRE,則需要安裝完整的JDK。 Tomcat需要能夠將JSP編譯成.class文件,JRE無法做到這一點。

+1

Downvoted,因爲這個答案是公然不正確的。我已經概述了什麼導致最初的問題,以及如何避免[我的答案在這裏](http://stackoverflow.com/questions/18468681/tomcat-6-java-home/29076720#29076720)。 – ZaLiTHkA

1

放在引號的路徑:

set JAVA_HOME="C:\Program Files (x86)\Java\jre7" 

的錯誤是由於這樣的事實,它的解析在Program Files文件的文件作爲一個單獨的參數,SET並不指望。爲什麼SET沒有正確讀取它我不知道更多關於你正在使用的操作系統,你正在運行Tomcat的命令shell,等等。

+0

我在Windows Server 2008 R2 Enterprise 64bi上運行它,代碼是bat文件;我只是通過CMD運行Tomcat。 – QuinsUK

1

你的命令失敗的原因是因爲它在'Program Files(x86)'之間有空格,所以它開始從'Files(x86)'讀取命令。所以我們把它放在雙引號之間,如下所示。 試試這個..

set JAVA_HOME="C:\"Program Files (x86)"\Java\jre7" 
+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 –

+0

我馬上編輯我的答案..謝謝。 –

6

我有同樣的問題在Windows 7上,定義如下(我把它在JDK bin文件夾一個setenv.bat文件被Tomcat 7的RUNNING.txt規定。

set JAVA_HOME="C:\Program Files (x86)\Java\jre7" 

我只是想完全移除雙引號:

set JAVA_HOME=C:\Program Files (x86)\Java\jre7 

和Tomcat然後開始

+0

這是爲我工作的解決方案:+1。 – TypeIA

27

注:我知道這已經是相當的但這裏發佈的許多答案要麼不完整,要麼不準確。希望這會有助於節省一些頭痛的問題。

首先:Tomcat 不需要需要JDK才能運行,只要知道它是JRE,它就可以正常工作。

其次,原始問題的錯誤來自命令set JAVA_HOME=...的語法問題。 Apache本身可以通過剝離並添加"引號來更好地處理它。

此外,我強烈建議在bin文件夾中創建一個setenv.bat文件。它缺省缺省,所以如果你還沒有,創建它並在那裏添加你的set JAVA_HOME=...set JRE_HOME=...行。與JRE

作爲每running.txt

執行命令

的JRE_HOME變量用於指定JRE的位置。 JAVA_HOME變量用於指定JDK的位置。

使用JAVA_HOME可以訪問在使用JRE_HOME時不允許的某些附加啓動選項 。

如果同時指定了JRE_HOME和JAVA_HOME,則使用JRE_HOME。

因此,要啓動這樣一來,你會需要以下:

set "JAVA_HOME=" 
set "JRE_HOME=C:\Program Files (x86)\Java\jre7" 

清除JAVA_HOME變量是一種可靠的,但它不是真正需要的。根據文檔,Tomcat將嘗試首先使用JRE變量。在問題

解決方案問題

需要特別注意引號的位置。這種方式將整個字符串保存在一個變量中,而不在變量內容中包含引號。

例如:

set %TEST%="hello" 
echo "%TEST%" 

威爾輸出""hello""

set "%TEST%=hello" 
echo "%TEST%" 

將輸出"hello"

因此,啓動批處理文件腳本嘗試使用""C:\Program Files (x86)\Java\jre7"",其中第一個非轉義空間位於「程序」和「文件」之間。

正如已經指出的那樣,刪除引號(至少在這種情況下)是可行的,但依靠這種方式是危險的。從一開始就安全地播放,並用引號將變量名包裹起來。

+1

這工作完美!根據本[教程](https://www.youtube.com/watch?v=gz1pnr7P8lY),我最初設置了%JAVA_HOME%=「C:\ Program Files \ path \ to \ jdk」。但是我用'set「JAVA_HOME =」'清除了JAVA_HOME,並運行了'set'JRE_HOME = C:\ Program Files \ path \ to \ jre「'。來自* nix,這開始是一個痛苦。謝謝! – tmthyjames

+0

完美答案...開始工作 – spt025

1
  • 首先,安裝java並找到安裝路徑。
  • 找到tomcat安裝路徑並找到\ bin中的startup.bat
  • 打開啓動。蝙蝠及以下(例如)線只添加setlocal之後和之前rem Guess CATALINA_HOME if not defined
:: JAVA 
set JAVA_HOME=D:\thushara_data\Java\jdk1.8.0_73 
set PATH=%JAVA_HOME%\bin;%PATH% 

現在嘗試重新運行startup.bat