【问题标题】:Tomcat is not running even though JAVA_HOME path is correct即使 JAVA_HOME 路径正确,Tomcat 也没有运行
【发布时间】: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 错误。我也更新了问题。

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


【解决方案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 - 评论你的评论真的太晚了,但是当你说“我认为”只是为了“礼貌”时,你实际上是在说(对许多读者)你不确定的答案。这会导致读者怀疑你的答案......这是一件坏事(如果它实际上是正确的)。在编写 StackOverflow 答案时,清楚比礼貌更重要。 (此外,在许多文化中,说“我认为……”根本没有礼貌或谦虚的含义。)简而言之,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】:

                          【讨论】:

                          • 请不要只发布链接答案。只需将链接的基本部分放在您的答案中
                          【解决方案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 可以正常运行

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2020-03-09
                            • 1970-01-01
                            • 2016-05-28
                            • 1970-01-01
                            • 1970-01-01
                            • 2017-06-04
                            相关资源
                            最近更新 更多