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」を実行すると表示されます
現時点ではファイルは予期しないものでした
手伝って頂けますか?
JREを指している。 JREの場所はC:\Program Files (x86)\Java\jdk1.6.0_26
などのようなJDKを指す必要があります。または、JREのみがインストールされている場合は、完全なJDKをインストールする必要があります。 Tomcatは、JSPを.classファイルにコンパイルできる必要がありますが、JREではできません。
注:これはすでにかなり古い質問ですが、ここに投稿された回答の多くは不完全または不正確であることがわかります。いくつかの頭痛。
まず、Tomcatは実行にJDKを必要としません。JREであることがわかっている限り、JREで正常に動作します。
第二に、元の質問のエラーは、_set Java_HOME=...
_コマンドの構文の問題に起因しています。 Apache自体は、_"
_引用符を削除して追加することで、より適切に処理できます。
また、bin
フォルダーに_setenv.bat
_ファイルを作成することを強くお勧めします。デフォルトでは存在しないため、まだない場合は作成し、そこに_set Java_HOME=...
_または_set JRE_HOME=...
_行を追加します。
JREで実行
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""
を使用しようとしましたが、最初の非エスケープスペースは「プログラム」と「ファイル」の間にあります。
既に指摘したように、引用符を削除することは(少なくともこの特定のケースでは)動作しますが、それに依存することは危険です。むしろ最初から安全にプレイし、変数名と値を引用符で囲みます。
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が起動しました。
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
を再実行してみてください
パスを引用符で囲みます。
set Java_HOME="C:\Program Files (x86)\Java\jre7"
このエラーは、プログラムファイル内のファイルを個別のパラメーターとして解析しているために発生しますが、SETは予期していません。 SETが適切に読み取らない理由使用しているOS、Tomcatを実行しているシェルのコマンドなどについて詳しく知ることなく、私は言うことができません。
変数を手動で設定できない場合: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
コマンドが失敗した理由は、「Program Files(x86)」の間に空白があるため、「Files(x86)」からコマンドの読み取りを開始するためです。そのため、次のように二重引用符で囲みます。これを試して..
set Java_HOME="C:\"Program Files (x86)"\Java\jre7"
試してみてください https://askubuntu.com/questions/446294/how-to-start-Tomcat7-when-catalina-sh-does-not-work Windowsではありませんが、Windowの拡張子が.shではなく.batである場合を除き、シェルスクリプトを検索しますが、ある程度の洞察を得ることができます。