Apache Tomcat Windows 服务忽略 JAVA_HOME 环境变量

Apache Tomcat Windows 服务忽略 JAVA_HOME 环境变量

我正在尝试在 Windows Server 2003 计算机上设置 Apache Tomcat。如果我使用命令行版本 ( catalina.bat start),一切都会正常工作,但如果我尝试将其用作 Windows 服务,它似乎会获取错误的值JAVA_HOME- 它会忽略我设置的环境变量,并且它使用的是运行时路径而不是 JDK 路径。因此,我的脚本无法编译,应用程序无法运行。

我正在使用的所有东西都是很旧的版本:Tomcat 4 和 Java 1.4.2_19(这是一个遗留应用程序,我现在没有时间更新 - 我只是想让它运行,用于第 1 阶段)。

我已将 JDK 安装到C:\j2sdk1.4.2_19并将 Tomcat 安装到C:\Program Files\Apache Software Foundation\Tomcat 4.1。服务的“Java 虚拟机”设置设为C:\j2sdk1.4.2_19\jre\bin\client\jvm.dllJAVA_HOME环境变量设置为C:\j2sdk1.4.2_19

当我尝试启动我的应用程序时,它会将以下错误写入日志:

Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK. It is currently set to "C:\j2sdk1.4.2_19\jre"

\jre即,它向中添加了一个JAVA_HOME不应该存在的额外的“ ”!

我还想知道它是否可能是某个地方的注册表设置,但我查看了所有明显的地方。HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat4\Parameters\Java\JavaHome设置为与JAVA_HOME环境变量相同,就像和JavaHome等地方下的键一样。JavaSoft\Java Development Kit\1.4JavaSoft\Java Runtime Environment\1.4.2_19

我开始感到相当沮丧,试图弄清楚为什么它不起作用!

答案1

我最终通过启动命令窗口、进行JAVA_HOME适当设置,然后从 Tomcatbin目录运行以下脚本来修复此问题:

service.bat remove
service.bat install

我不知道它是怎么做到的,但是它重新配置了服务以使用新的值JAVA_HOME

答案2

检查相应的注册表项。这是我的:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache 软件基金会\Procrun 2.0\Tomcat7.55\Parameters\Java

更改Jvm键值

答案3

我在使用 Tomcat 6 和 Java 6 时也遇到了类似的问题。(我知道您说的是 Tomcat 4 和 Java 1.4)

我会检查appwiz.cpl机器上是否安装了 JRE 1.6* - 因为如果安装了,那么 JAVA_HOME 就不再取自环境变量,而是取自 JRE 1.6 安装创建的注册表项。(在最坏的情况下,您可以编辑%TOMCAT_HOME%/bin/catalina.bat并设置JAVA_HOME指向您好的 JDK///)

相关链接可能是

https://issues.apache.org/bugzilla/show_bug.cgi?id=41538

相关内容