エラーが表示されます:
C:\ dev\ws\springapp\build.xml:81:javacコンパイラが見つかりません。 com.Sun.tools.javac.Mainはクラスパスにありません。おそらく、Java_HOMEはJDKを指していません。現在、「C:\ Program Files\Java\jre6」に設定されています
しかし、Java_HOMEをC:\ Program Files\Java\jdk1.6.0_14に明確に設定しました
ANTはどこでこの値を取得していますか?
Java_HOMEを「C:\ Program Files\Java\jdk1.6.0_14」に「明確に設定」したという場合、コマンドラインから「set」を実行したときに表示されるものですか? Antが設定されていない場合、Java_HOMEの値を推測すると思います... Java_HOMEの代わりにJAVAHOMEを設定した可能性はありますか?
そのようなものがない場合は、ant.bat
バッチファイル(およびそれが呼び出すもの-複雑であるかどうかは覚えていません)開始時およびその他のさまざまな興味深い場所でJava_HOMEを出力します。
C:\Program Files\Java\jdk1.7.0_04
)。これは、私が遭遇した特定のシナリオで機能しました。
次のコマンドを使用してAntビルドを実行しようとすると、同じ問題が発生しました。
Java -cp ant.jar:ant-launcher.jar org.Apache.tools.ant.Main
コマンドの出力は次のとおりです。
BUILD FAILED
XXX/build.xml:8: 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 "/usr/lib/jvm/Java-6-openjdk/jre"
Java実行可能ファイルは、「/ usr/lib/jvm/Java-6- JDKがインストールされているopenjdk」。
この問題を解決するには、fork="yes"
私の<javac>
仕事。
Java_HOME設定に/ binが含まれていて、Antが/ binを追加している可能性もあります。これにより、exeが見つかりません。それは私に起こった:}
必ずnot末尾のセミコロンを使用してください:これは機能しません:
set Java_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29;
この意志:
set Java_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29
同様の問題に遭遇しました。 MavenビルドでAntタスクを実行するためにリンクし、問題が発生しました。以下の手順で修正しました。
そしてそれは私のために働いた。
この問題を解決するには、windows-> preferences-> ant-> runtimeでtools.jarファイルを追加します。
Eclipseでは、インストールされたJRE設定をJDKに設定します-プロジェクト内(プロジェクトプロパティ-> Java Build Path-> Libraries))、または環境設定のグローバルデフォルト(Java-> Installed JREs)。 eclispe設定はシステム変数よりも強力です。
システムおよびユーザーの環境変数について知っていることを願っています。ユーザーの方がシステムよりも優先されます。システム変数にJava_HOMEを設定しており、ユーザー変数に同じエントリが存在する場合、後者のみを取得します。
[マイコンピュータ]を右クリックし、[プロパティに移動]、[詳細設定]タブを選択し、[環境変数]をクリックして、ユーザーおよびシステム環境変数のリストを表示します。
セミコロンが私を追い払っていました:Java_HOME
を「C:\ jdk1.6.0_26;」に設定していました「C:\ jdk1.6.0_26」の代わりに。 ant.bat
ファイルを調べるというJon Skeetの提案に従って、末尾のセミコロンを削除しました。これはそのファイルの一部です:
if "%Java_HOME%" == "" goto noJavaHome
if not exist "%Java_HOME%\bin\Java.exe" goto noJavaHome
そのため、セミコロンは最後から切り捨てられず、ファイルの検索に失敗するため、デフォルトでは「C:\ Java\jre6」などのようになります。
紛らわしい部分は、 HowtoBuild ページにセミコロンを使用するように記載されていることですが、それはそれを壊しているようです。
実際にsuperuser.comでこの答えを見つけましたが、JDK\libディレクトリからJRE\libディレクトリにtools.jarをコピーする必要がありました。
ゼロを意味する...私が考えることができるのは、Sunが最新のJavaランタイム(Java 7 Update 11)でこのバグを導入したか、現在のJDKの場所を読み取る方法でAntのバグを導入したことだけです(JREはJDKよりも明らかに更新されており、これもSunの愚かさです... JREを更新するたびにJDKをリリースする必要があります)。
Java_HOMEが正しく設定されました。 「set Java_HOME」を実行して確認しました。私のJDKディレクトリを指しており、スペルが正しい。しかし、Antはjavacが見つからないと主張していましたが、Java_HOMEは私のJREディレクトリにあると思っていました。
私のシステムは、最新のSun JRE7アップデート(10および11)の前に正常に機能しました。 Antはバージョン1.8.4です
他のすべてが正しい場合は、次を試してください
注:使用したいJavaコンパイラーにtools.jarを追加し、複数のtools.jar(Javaコンパイラー)がプレゼント。
あなたが持っている場合 Java_HOME
は設定されていますが、タイプミスがあります。jre6パスへの偽の参照も表示されます。
私は同じ問題に直面していたので、javacタグの実行可能プロパティをjavac.exeの場所に設定することで問題を解決しました。これで問題は解決しました
<javac srcdir="${srcDir}" destdir="${buildDir}" fork="true" executable="C:\Program Files\Java\jdk1.7.0_03\bin\javac"/>
以下の手順からJDKパスを設定するだけです。
[実行]-> [外部ツール]-> [外部ツールの構成]に移動します。
-> [JRE]を選択してから、ドロップダウンリストから使用可能なJDKを選択します。例jdk1.8.0_25
同じための簡単な回避策は
C:\ Program Files\Java\jdk1.6.0_14\lib\tools.jarをC:\ Program Files\Java\jre6\lib \にコピーします
この例外は、Java_HOMEがC:\ Program Files\Java\jre6として設定されており、Antがその中にtools.jarを見つけることができないために発生します。
この問題が発生するのは一般的です。異なる環境に対して2つの異なるバージョンのJava(Java 6およびJava 7)があるため、システムに特定のJavaホームを設定できません。この問題を解決するために、build.xmlファイルを開くときに実行構成にJDKパスを含めました。このように、2つの異なるビルドファイルはビルドに2つの異なるJavaバージョンを使用します。この問題に対するより良い解決策があると思いますが、少なくとも上記のアプローチではJava_HOME変数の設定を避けます。
参考までに、私はWindows 7を使用しており、新しいJava_HOME設定を有効にするためにWindowsを再起動する必要がありました。
組み込みのEclipse jdkを使用してEclipseでantを実行する必要がある場合、build.xmlに以下の行を追加します。
<property name="build.compiler" value="org.Eclipse.jdt.core.JDTCompilerAdapter"/>
環境変数でJava_HOMEをD:\Program Files\IBM\SDP\jdk
として設定します。引用符やセミコロンを付けないでください。それは私のために働いています。解決策を試してください。実際にant.batで適切なJava_HOME
をチェックします。ant.batが見つからない場合は、Java_HOME
がデフォルトのJREを指します。
同じ問題がありました。
c:\jb\src\build.xml:191: 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:\Program Files\Java\jre7"
Total time: 0 seconds
c:\jb\src>echo %Java_HOME%
c:\Program Files\Java\jdk1.7.0_13
解決:
path = c:\ant\bin\;%PATH%
path = c:\Program Files\Java\jdk1.7.0_17\bin;%PATH%
set "Java_HOME=c:\Program Files\Java\jdk1.7.0_13"
私はjdkパス命令だけでそれを行うと思いますが、上記の解決策が防弾であることを理解するのが面倒です。 :-)
Windows7も使用
Jenkinsでプロジェクトを構築するときに、この問題に直面しました。まず、ant.bat
が見つかりませんでした。これは、システム環境変数のパスにant.batへのパスを追加することで修正されました。その後、antはjdkディレクトリを見つけることができませんでした。これは、my computer > properties > advanced > environment variables
を右クリックしてJava_HOME
という新しい環境変数を作成し、それにC:\Program Files\Java\jdk1.7.0_21
という値を割り当てることで修正されました。ユーザー変数でこの環境変数を作成しないでください。システム変数でのみ作成します。
どちらの場合も、システムを再起動する必要がありました。
私も同じ問題に直面していました。 Windows 7を使用しており、Javaの2つのバージョンがインストールされています。最初に最新バージョンJava 7をインストールしてから、バージョン5をインストールしました。
Javaインストールディレクトリの内容:
C:\Program Files\Java>
jdk1.5.0_14
jdk1.7.0_17
jre1.5.0_14
jre7
java_HOMEが正しい値に設定されました。
C:\>set ja
Java_HOME=C:\Program Files\Java\jdk1.5.0_14
しかし、それでも同じ問題が発生していました。
XXXXXXX\build.xml:478: The following error occurred while
executing this line:
XXXXXXX\build.xml:477: 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:\Program Files\Java\jre7"
このスレッドですべての提案を試した後、自分の間違いに気付きました。「システム変数」セクションではなく「ユーザー変数」セクションで環境変数を設定しようとしました。「システム変数」で設定した後、しかし、私は別の問題に直面しています。
Javaが指すデフォルトバージョンはまだ7です。
C:\>Java -version
Java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)
バージョン5を指すようにする方法がわかりません。
同じ問題がありました。 Java_HOMEが指すJDKパッケージにtools.jarがありませんでしたJDK instal.lationにtools.jarがあることを確認してください
(明らかにメッセージエラーは紛らわしいです)