web-dev-qa-db-ja.com

Java_HOME環境変数を無視するApache Tomcat Windowsサービス

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 theclasspath. Perhaps Java_HOME does notpoint to the JDK. It is currently setto "C:\j2sdk1.4.2_19\jre"

つまり、\jreに追加すべきではない「Java_HOME」を追加する必要があります。

また、どこかにレジストリ設定があるのではないかと思いましたが、わかりやすいところを全部調べました。 HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat4\Parameters\Java\JavaHomeは、Java_HOMEJavaSoft\Java Development Kit\1.4などの場所にあるJavaHomeキーと同様に、JavaSoft\Java Runtime Environment\1.4.2_19環境変数と同じに設定されます。

なぜそれが機能しないのかを理解しようとして、私はかなりイライラし始めています!

5
andygeers

コマンドウィンドウを起動し、Java_HOMEを適切に設定して、Tomcatのbinディレクトリから次のスクリプトを実行することで、最後に修正しました。

service.bat remove
service.bat install

それがどのように行われたかはわかりませんが、Java_HOMEの新しい値を使用するようにサービスが再構成されました。

5
andygeers

適切なレジストリキーを確認します。これが私のものです:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat7.55\Parameters\Java

jVMキー値を変更する

0
user293755

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を指します///)

関連するリンクは

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

0
Aviad