web-dev-qa-db-ja.com

Tomcat 6 Java_HOME

Tomcatサーバーが探しているJava_HOMEパスを設定しようとしています。設定しようとしていますが、機能していないようで、設定するとエラーが発生します。 setclasspath.batでJavaを使用して設定しようとしています

set Java_HOME="C:\Program Files (x86)\Java\jre7"

これはsetclasspath.batの先頭にあります

set Java_HOME="C:\Program Files (x86)\Java\jre7"
if not "%Java_HOME%" == "" goto gotJdkHome
if not "%JRE_HOME%" == "" goto gotJreHome
echo Neither the Java_HOME nor the JRE_HOME environment variable is defined
echo At least one of these environment variable is needed to run this program
goto exit

これを設定して「startup.bat start」を実行すると表示されます

現時点ではファイルは予期しないものでした

手伝って頂けますか?

20
QuinsUK

JREを指している。 JREの場所はC:\Program Files (x86)\Java\jdk1.6.0_26などのようなJDKを指す必要があります。または、JREのみがインストールされている場合は、完全なJDKをインストールする必要があります。 Tomcatは、JSPを.classファイルにコンパイルできる必要がありますが、JREではできません。

0
James Corcoran

注:これはすでにかなり古い質問ですが、ここに投稿された回答の多くは不完全または不正確であることがわかります。いくつかの頭痛。

まず、Tomcatは実行にJDKを必要としません。JREであることがわかっている限り、JREで正常に動作します。

第二に、元の質問のエラーは、_set Java_HOME=..._コマンドの構文の問題に起因しています。 Apache自体は、_"_引用符を削除して追加することで、より適切に処理できます。

また、binフォルダーに_setenv.bat_ファイルを作成することを強くお勧めします。デフォルトでは存在しないため、まだない場合は作成し、そこに_set Java_HOME=..._または_set JRE_HOME=..._行を追加します。

JREで実行

running.txt

JRE_HOME変数は、JREの場所を指定するために使用されます。 Java_HOME変数は、JDKの場所を指定するために使用されます。

Java_HOMEを使用すると、JRE_HOMEの使用時に許可されない特定の追加起動オプションにアクセスできます。

JRE_HOMEとJava_HOMEの両方が指定されている場合、JRE_HOMEが使用されます。

したがって、この方法で起動するには、次のものが必要です。

_set "Java_HOME="
set "JRE_HOME=C:\Program Files (x86)\Java\jre7"
_

_Java_HOME_変数をクリアすることはフェイルセーフですが、必ずしも必要ではありません。ドキュメントによれば、Tomcatはとにかく最初にJRE変数を使用しようとします。

質問の問題の解決策

引用符の位置に特に注意してください。この方法では、変数の内容自体に引用符を含めずに、文字列全体を1つの変数にまとめます。

例えば:

_set %TEST%="hello"
echo "%TEST%"
_

_""hello""_を出力します。

_set "%TEST%=hello"
echo "%TEST%"
_

_"hello"_を出力します。

そのため、スタートアップバッチファイルスクリプトは""C:\Program Files (x86)\Java\jre7""を使用しようとしましたが、最初の非エスケープスペースは「プログラム」と「ファイル」の間にあります。

既に指摘したように、引用符を削除することは(少なくともこの特定のケースでは)動作しますが、それに依存することは危険です。むしろ最初から安全にプレイし、変数名値を引用符で囲みます。

36
ZaLiTHkA

Windows 7でも、次の定義で同じ問題が発生しました(Tomcat 7のRUNNING.txtで指定されているように、jdk binフォルダーのsetenv.batファイルにそれを置きました。

set Java_HOME="C:\Program Files (x86)\Java\jre7"

私は二重引用符を完全に削除しようとしました:

set Java_HOME=C:\Program Files (x86)\Java\jre7

そしてTomcatが起動しました。

8
  • まず、Javaをインストールし、インストールパスを見つけます。
  • Tomcatインストールパスを見つけて、\ binでstartup.batを見つけます。
  • Startup.batを開き、setlocalの直後でrem Guess CATALINA_HOME if not definedの前に以下の(例)行を追加します
:: Java
set Java_HOME=D:\thushara_data\Java\jdk1.8.0_73
set PATH=%Java_HOME%\bin;%PATH%

startup.batを再実行してみてください

4
tk_

パスを引用符で囲みます。

set Java_HOME="C:\Program Files (x86)\Java\jre7"

このエラーは、プログラムファイル内のファイルを個別のパラメーターとして解析しているために発生しますが、SETは予期していません。 SETが適切に読み取らない理由使用しているOS、Tomcatを実行しているシェルのコマンドなどについて詳しく知ることなく、私は言うことができません。

2
Jesse
  • 変数を手動で設定できない場合:Java_HOME and JRE_HOMEを設定する

  • システム設定を進めて、environment変数をクリックします

  • system変数の下をクリックします

  • 新しい変数名:Java_HOME
  • 変数値:[path of jdk]C:\Program Files\Java\jdk1.8.0_181および[OK]をクリックします

  • 同様にJRE_HOMEを追加します

  • 新しい変数名をクリックします:JRE_HOME
  • 変数値:[path of jre]C:\Program Files\Java\jre1.8.0_181
  • クリック Ok > Ok > Ok
2
Adarsh J

コマンドが失敗した理由は、「Program Files(x86)」の間に空白があるため、「Files(x86)」からコマンドの読み取りを開始するためです。そのため、次のように二重引用符で囲みます。これを試して..

set Java_HOME="C:\"Program Files (x86)"\Java\jre7"
1

試してみてください https://askubuntu.com/questions/446294/how-to-start-Tomcat7-when-catalina-sh-does-not-work Windowsではありませんが、Windowの拡張子が.shではなく.batである場合を除き、シェルスクリプトを検索しますが、ある程度の洞察を得ることができます。

0