我正在尝试在 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.dll
。JAVA_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.4
JavaSoft\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///)
相关链接可能是