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

Posted

技术标签:

【中文标题】即使 JAVA_HOME 路径正确,Tomcat 也没有运行【英文标题】:Tomcat is not running even though JAVA_HOME path is correct 【发布时间】:2012-02-10 03:17:14 【问题描述】:

当我尝试使用 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)但出现同样的错误。

【问题讨论】:

检查 startup.bat 是否正在重新定义该环境变量。寻找“SET JAVA_HOME ...” @luciano 不,没有重新定义 JAVA_HOME。 你的 JAVA_HOME 有空格吗?您的回显结果是否正确,还是只是复制/粘贴错误? @zenzen 是的,这是 c/p 错误。我也更新了问题。 【参考方案1】:

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

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

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

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

【讨论】:

如果您看到我更新的问题,我想您已经成功了。 Files\Java\jdk1.6.0_25 表示Program Files 的最后一部分。所以,我猜它的空白问题。是否有任何转义字符可以在路径中使用来解决这个问题,而无需安装/卸载。 我认为这是一个 tomcat 问题。是什么让您认为它与 Windows 有关? 因为它可以在 *NIX 系统上运行 :) 据我所知,Tomcat 人员编写的其中一个 java 类中有一行不能正确处理空格,所​​以是的,这有点是 Tomcat 问题但如果我没记错的话,只能在 Windows 系统上使用。 我遇到了同样的问题,我在 JAVA_HOME 和 PATH 中都没有空格。 @Luciano 我可以验证 Luciano 的评论。我刚刚遇到了与 OP 相同的问题,我正在使用 Tomcat 7.0.47 和 JRE 1.7.0。我从我的 CATALINA_HOME、CATALINA_BASE 和 JRE_HOME 中取出引号(此框中没有安装 JDK)。去掉引号让我使用以下命令运行 Tomcat:%CATALINA_HOME%\bin\startup.bat 【参考方案2】:

我认为你的 JAVA_HOME 应该指向

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

而不是

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

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

更新

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

【讨论】:

如果你知道它的正确的,那为什么它会让你思考? :P 我觉得这样说更有礼貌。 我使用的是tomcat 7.0.62。我必须做的唯一改变是安装最新版本的 JRE,之后一切顺利。我安装了jre1.8.0_60,问题就解决了。 @Luciano - 评论你的评论真的太晚了,但是当你说“我认为”只是为了“礼貌”时,你实际上是在说(对许多读者)你不确定的答案。这会导致读者怀疑你的答案......这是一件坏事(如果它实际上是正确的)。在编写 *** 答案时,清楚比礼貌更重要。 (此外,在许多文化中,说“我认为……”根本没有礼貌或谦虚的含义。)简而言之,Quazi 提出了一个有效的观点。【参考方案3】:

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

应该如图...

【讨论】:

【参考方案4】:

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

JAVA_HOME : C:\Program Files\Java\jdk1.6.0_31; JRE_HOME : C:\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 是一个奇怪的解决方案,但你猜猜它有什么不同?

【讨论】:

正如我所说的一样,你的解决方案终于奏效了【参考方案5】:

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

【讨论】:

【参考方案6】:

设置环境变量([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

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

【讨论】:

【参考方案7】:

我设置了

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

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

确实有效。

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

有时分号很重要 请确保

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

但不是

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

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

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

要运行 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。

【讨论】:

【参考方案14】:

供我参考 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.

【讨论】:

【参考方案15】:

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

【讨论】:

【参考方案16】:

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

【讨论】:

请不要只发布链接答案。只需将链接的基本部分放在您的答案中【参考方案17】:
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;

【讨论】:

之前的回答是不可接受的。感谢您的建议。【参考方案18】:

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

【讨论】:

以上是关于即使 JAVA_HOME 路径正确,Tomcat 也没有运行的主要内容,如果未能解决你的问题,请参考以下文章

即使设置正确,Gradle 也会发现错误的 JAVA_HOME

JDK 和 tomcat 环境变量配置

在使用替代方案的 Linux 系统上,JAVA_HOME 的正确路径是啥?

tomcat环境配置遇到的问题

tomcat环境配置遇到的问题

tomcat7.0安装笔记