即使 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_HOME
:C:\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