我正试图让Apache Tomcat设置在Windows Server 2003机器上。 如果我使用命令行版本( catalina.bat start
),它一切正常,但是如果我尝试使用它作为Windows服务,它似乎为JAVA_HOME
选取了错误的值 – 它忽略了我设置的环境variables,它使用运行时path而不是JDKpath。 因此,我的脚本将无法编译,应用程序无法运行。
我正在使用一切相当老的版本: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
环境variables设置为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
classpath. Perhaps JAVA_HOME does not
point to the JDK. It is currently set
point to the JDK. It is currently set
to "C:\j2sdk1.4.2_19\jre"
即它添加了一个额外的“ \jre
”到不应该在那里的JAVA_HOME
!
我也想知道这是否可能是一个registry设置的地方,但我看了所有明显的地方。 像JavaSoft\Java Development Kit\1.4
和JavaSoft\Java Runtime Environment\1.4.2_19
类的JavaHome
密钥一样,将HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat4\Parameters\Java\JavaHome
设置为与JAVA_HOME
环境variables相同JavaSoft\Java Runtime Environment\1.4.2_19
。
我开始感到沮丧,试图找出为什么它不会工作!
我最后通过启动一个命令窗口,适当地设置JAVA_HOME
,然后从Tomcat的bin
目录运行以下脚本来修复它:
service.bat remove service.bat install
我不知道它是如何做的,但重新configuration服务使用JAVA_HOME
的新值。
我遇到了Tomcat 6和Java 6的类似问题(我意识到你在谈论Tomcat 4和Java 1.4)
我将在appwiz.cpl
检查是否在机器上安装了JRE 1.6 *,因为如果是这样,那么JAVA_HOME不再是从环境variables中取得,而是从JRE 1.6安装创build的registry项中取得。 (在最坏的情况下,您可以编辑%TOMCAT_HOME%/bin/catalina.bat
并将JAVA_HOME
为指向您的良好JDK ///)
相关链接可能是
检查相应的registry项。 这是我的:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Apache Software Foundation \ Procrun 2.0 \ Tomcat7.55 \ Parameters \ Java
更改Jvm键值