24

当我尝试使用运行 tomcat 时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

但后来我尝试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)但发生同样的错误。

4

18 回答 18

32

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

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

@Edit:卢西亚诺击败我注意到它,但你也应该binJAVA_HOME

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

于 2012-01-13T23:53:32.727 回答
19

我认为你的 JAVA_HOME 应该指向

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

代替

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

也就是说,没有bin文件夹。

更新

如果我像您一样使用引号设置 JAVA_HOME,则会出现该新错误。你在使用引号吗?如果是这样,请删除它们。

于 2012-01-13T23:55:37.567 回答
9

避免在任何环境变量的末尾使用分号...来自 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

应该如图所示...

于 2012-05-08T04:46:55.577 回答
6

我安装了 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 FilesC:\Program Files\Java\jdk1.6.0_31\bin
  • JAVA_HOMEC:\Program Files\Java\jdk1.6.0_31
  • 已删除JRE_HOME

所以我所做的是JRE_HOMEJAVA_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是一个奇怪的解决方案,但你猜猜它有什么不同?

于 2013-09-30T15:43:08.663 回答
2

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

于 2013-07-26T21:50:16.937 回答
1

设置环境变量([Windows键]+[暂停键],切换到“高级”,单击“环境变量”,在“系统变量”(下方列表)中,单击“新建”(或“编辑”,如果您已经拥有它),

名称:JAVA_HOME

值:C:\PROGRA~1\Java\JDK16~1.0_3

对于 C:\Program Files\Java\jdk1.6.0_32

点击“确定”,

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

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

添加:C:\PROGRA~1\Java\JDK16~1.0_3\bin

全部点击“确定”。-- 重启你的电脑(建议)

于 2012-05-31T21:07:52.323 回答
0

我设置

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

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

真的行。

于 2012-06-12T17:44:17.917 回答
0

还要确保您拥有适合 CPU 类型的正确 Tomcat 版本。我在 32 位操作系统上安装了 64 位 tomcat,但它给了我 JAVA_HOME 异常,而事实并非如此。

于 2013-02-14T12:13:31.910 回答
0

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

于 2013-10-12T16:58:33.730 回答
0

有时分号很重要,请确保

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

但不是

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

我遇到了同样的问题但没有解决

于 2014-03-14T08:57:50.507 回答
0

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

于 2014-08-29T05:30:00.217 回答
0

我删除了Tomcat并再次解压缩它并且它工作。

于 2015-01-20T14:21:18.473 回答
0

要运行 Tomcat8,您需要在 Env 变量中定义 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。

于 2016-06-27T13:09:07.490 回答
0

供我参考 Atlassian 的 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.
于 2017-03-08T15:13:54.517 回答
0

检查可比性,如果您使用的是 java 8,则使用 tomcat 9,如果您使用的是 java 7,则使用 tomcat 7。并将 JAVA_HOME 设置为 C:\Program Files\Java\jdk1.8.0_101,而不是 bin。

于 2019-12-17T06:57:58.267 回答
-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 软件基金会\Apache Tomcat 7.0.27 ;

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

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

于 2013-10-26T07:32:42.880 回答
-1

删除分号,您可以看到该链接: http: //www.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_HowTo.html

于 2015-02-06T23:15:17.210 回答
-2

我有类似的问题,请注意,除非我们要使用调试模式,否则我们不需要设置 JAVA_HOME。Windows 7中的tomcat可以处理环境变量中的空格问题是因为路径中的“bin”。将 JRE_HOME 设置为 C:\Program Files (x86)\Java\jre1.8.0_65 解决了我的问题,并且 tomcat 可以正常运行

于 2015-10-23T11:54:17.230 回答