Windows Server2003マシンでApacheTomcatをセットアップしようとしています。コマンドラインバージョン(catalina.bat start
)を使用すると、すべて正常に機能しますが、Windowsサービスとして使用しようとすると、Java_HOME
の値が間違っているように見えます-環境変数を無視します設定しましたが、JDKパスではなくランタイムパスを使用しています。その結果、スクリプトがコンパイルされず、アプリが実行されません。
私はすべてのかなり古いバージョンを使用しています:Tomcat 4とJava 1.4.2_19(これはレガシーアプリなので、moで更新する時間がありません-取得したいだけです実行中、フェーズ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
やJavaSoft\Java Development Kit\1.4
などの場所にあるJavaHome
キーと同様に、JavaSoft\Java Runtime Environment\1.4.2_19
環境変数と同じに設定されます。
なぜそれが機能しないのかを理解しようとして、私はかなりイライラし始めています!
コマンドウィンドウを起動し、Java_HOME
を適切に設定して、Tomcatのbin
ディレクトリから次のスクリプトを実行することで、最後に修正しました。
service.bat remove
service.bat install
それがどのように行われたかはわかりませんが、Java_HOME
の新しい値を使用するようにサービスが再構成されました。
適切なレジストリキーを確認します。これが私のものです:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat7.55\Parameters\Java
jVMキー値を変更する
Tomcat 6とJava 6.でも同様の問題に直面しました(Tomcat 4とJava 1.4)の話をしていると思います)
チェックインしますappwiz.cpl
マシンにJRE1.6 *がインストールされているかどうか-インストールされている場合、Java_HOMEは環境変数からではなく、JRE1.6のインストールによって作成されたレジストリエントリから取得されます。 (最悪の場合、%Tomcat_HOME%/bin/catalina.bat
そして設定Java_HOME
そこにあなたの良いJDKを指します///)
関連するリンクは