即使JAVA_HOME路径正确,Tomcat也没有运行

时间:2012-01-13 23:37:48

标签: java apache tomcat windows-7 java-home

当我尝试使用startup.bat运行tomcat时,我收到以下错误,

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

然后我尝试C:\>echo %java_home%并得到以下结果

C:\Program Files\Java\jdk1.6.0_25\bin

我甚至尝试将JAVA_HOME手动设置为系统变量列表,但这个问题仍然存在。

我能做些什么来解决它?

我使用的是Windows 7。


更新

在设置一个名为JAVA_HOME的新系统变量并将其路径设置为"C:\Program Files\Java\jdk1.6.0_25\bin\"之后,我再次尝试了启动脚本,这次我收到了一个新错误。

D:\Work\apache-tomcat-6.0.35\bin>startup.bat
Files\Java\jdk1.6.0_25"" was unexpected at this time.

知道这个错误意味着什么吗?

我甚至尝试将路径设置为"C:\Program Files\Java\jdk1.6.0_25\"(没有 bin )但发生了同样的错误。

18 个答案:

答案 0 :(得分:28)

尝试在其他地方安装java - 在没有空格的目录中。再次设置JAVA_HOME变量,然后重试。我记得Tomcat在Window XP上有一些问题,如果在启动包含空格时使用了任何变量。也许它与Windows 7类似。

我记得我必须更改处理Tomcat启动的Tomcat java类中的一些行。

@Edit: Luciano打败了我注意到它,但你也应该从bin删除JAVA_HOME

@Edit:我还记得另一个修复(虽然我自己没有测试)是将JAVA_HOME设置为速记版本,例如C:\Progra~1\Java\jdk1.6.0_25

答案 1 :(得分:19)

我认为你的JAVA_HOME应该指向

C:\Program Files\Java\jdk1.6.0_25

而不是

C:\Program Files\Java\jdk1.6.0_25\bin

即没有 bin 文件夹。

<强>更新

如果我像你一样用引号设置JAVA_HOME,那么我就会出现这个新错误。你用引号吗?如果是这样,请删除它们。

答案 2 :(得分:8)

在JAVA_HOME或JRE_HOME

的任何环境变量的末尾避免使用分号
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_25\bin

JRE_HOME=C:\Program Files\Java\jdk1.6.0_32\jre

应如图所示...

答案 3 :(得分:5)

我安装了Win 8 x86。我的Path变量有条目C:\Program Files\Java\jdk1.6.0_31\bin,我也有以下变量:

  • JAVA_HOMEC:\Program Files\Java\jdk1.6.0_31;
  • JRE_HOMEC:\Program Files\Java\jre6;

我的tomcat安装在C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.41

但它仍然不适合我。

我尝试用Program Files替换这些路径中的Progra~1。我还尝试将JAVA移动到另一个文件夹,以便它的完整路径不包含任何空格。但没有任何效果。

最后对我有用的环境变量是:

  • 将路径变量保持为完整Program Files,即C:\Program Files\Java\jdk1.6.0_31\bin
  • JAVA_HOMEC:\Program Files\Java\jdk1.6.0_31
  • 已删除JRE_HOME

所以我所做的就是删除了JRE_HOME并在JAVA_HOME结束时删除了分号。我认为分号应该不是问题,尽管我删除了它。我正在给这些设置,因为经过大量的谷歌搜索没有任何对我有用,突然这些似乎工作。您可以复制并查看它是否适合您。

这也适用于Win 7 x64,其中

  • 路径变量包含C:\Program Files (x86)\Java\jdk1.7.0_17\bin
  • JAVA_HOME设置为C:\Program Files (x86)\Java\jdk1.7.0_17(不带分号)

请告诉我为什么这样做有效,我知道删除JRE_HOME是一个奇怪的解决方案,但是有没有猜到它有什么不同?

答案 4 :(得分:2)

从JAVA_HOME中删除'bin'。这解决了这个问题。

答案 5 :(得分:1)

设置环境变量([Windows Key] + [Pause Key],切换到“Advanced”,单击“Environment Variables”,在“System Variables”(下方列表)中,单击“New”(或“Edit”,如果你已经有了),

名: JAVA_HOME

值: C:\ PROGRA〜1 \爪哇\ JDK16〜1.0_3

表示C:\ Program Files \ Java \ jdk1.6.0_32

点击“确定”,

转到“系统变量”中的“路径”,

添加;在行尾(除非那里已有),

添加: C:\ PROGRA〜1 \爪哇\ JDK16〜1.0_3 \ bin中

点击“确定”全部。 - 重新启动计算机(建议)

答案 6 :(得分:0)

检查可比性,如果您使用的是Java 8,请使用tomcat 9,如果您使用的是Java 7,请使用tomcat7。还要将JAVA_HOME设置为C:\ Program Files \ Java \ jdk1.8.0_101,而不是斌

答案 7 :(得分:0)

作为Atlassian's Bamboo的参考,问题是因为我把命令包裹在语音标记中

所以

SET JRE_HOME="C:\Program Files\Java\jre1.8.0_121"

错了,正确的版本在哪里

SET JRE_HOME=C:\Program Files\Java\jre1.8.0_121

这给了我错误信息

Files\Java\jre1.8.0_121"" was unexpected at this time.

答案 8 :(得分:0)

要运行Tomcat8,您需要在Env Variable中定义JRE_HOME。

即使正确设置,JAVA_HOME也无法做到。

JRE_HOME = C:\Program Files\Java\jdk1.8.0_77\jre

您应该选择SDK内部的JRE,即安装JDK(SDK)的JRE。 换句话说,你的JAVA_HOME + \ jre

当需要编译JDK来支持JSP时,要编译从* .jsp文件生成的Servlet。否则需要运行JRE。因此,在开发时需要JAVA_HOME,在部署时需要JRE_HOME。

答案 9 :(得分:0)

我删除了Tomcat并再次解压缩它并且有效。

答案 10 :(得分:0)

在没有\ bin的情况下为JAVA_HOME和JRE_HOME设置环境变量。 这对我有用

答案 11 :(得分:0)

有时候,semiColon会产生问题  请保证

JAVA_HOME=c:\Program Files\Java\jdk1.6.0_32 

但不是

JAVA_HOME=c:\Program Files\Java\jdk1.6.0_32;

相同的问题我得到但没有解决

答案 12 :(得分:0)

有两种类型的环境变量 第一个用户变量如果您在此路径中它将仅适用于该特定用户。 第二个是System变量,如果你设置路径,它被所有类型的用户使用.. 在我的系统中,我在系统变量中设置了JAVA_HOME,它没有工作,然后我设置了路径 用户变量它正在工作.....所以尝试两种类型的环境变量......

答案 13 :(得分:0)

还要确保您具有适用于CPU类型的正确版本的Tomcat。我在32位O / S上安装了一个64位的tomcat,但它却给了我JAVA_HOME异常,但事实并非如此。

答案 14 :(得分:0)

我设置了

变量名:JAVA_HOME 值:C:\ Program Files \ Java \ jdk1.6.0_32

我在没有分号的系统/环境变量中设置这些属性,tomcat正在我的系统上运行。

它真的有用。

答案 15 :(得分:-1)

First Run the tomcat directly through the tomcat /bin folder with 
startup.bat if running sucessful the set the variable as below sample    

JAVA_HOME值:C:\ Program Files \ Java \ jdk1.6.0_32;

路径:C:\ Program Files \ Java \ jdk1.6.0_32 \ bin;

CATALINA_HOME = C:\ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.27;

PATH =%PATH%;%JAVA_HOME%\ bin中;%CATALINA_HOME%\ bin中;

如果需要 CLASS_PATH:%CATALINA_HOME%\ lib;%JAVA_HOME%\ lib;

答案 16 :(得分:-1)

答案 17 :(得分:-2)

我有类似的问题,请注意我们不需要设置JAVA_HOME,除非我们要使用调试模式。 Windows 7中的tomcat可以处理环境变量中的空格 问题是因为&#34; bin&#34;在路上。 将JRE_HOME设置为C:\ Program Files(x86)\ Java \ jre1.8.0_65解决了我的问题并且tomcat启动并运行没有任何问题