web-dev-qa-db-ja.com

ANTがJava_HOMEが間違っているのに間違っていると言うのはなぜですか?

エラーが表示されます:

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はどこでこの値を取得していますか?

59
Ankur

Java_HOMEを「C:\ Program Files\Java\jdk1.6.0_14」に「明確に設定」したという場合、コマンドラインから「set」を実行したときに表示されるものですか? Antが設定されていない場合、Java_HOMEの値を推測すると思います... Java_HOMEの代わりにJAVAHOMEを設定した可能性はありますか?

そのようなものがない場合は、ant.batバッチファイル(およびそれが呼び出すもの-複雑であるかどうかは覚えていません)開始時およびその他のさまざまな興味深い場所でJava_HOMEを出力します。

34
Jon Skeet
  1. Eclipseで実行外部ツール外部ツール構成をクリックします。
  2. [〜#〜] jre [〜#〜]タブをクリックします。
  3. Installed JREs ...ボタンをクリックします。
  4. 追加ボタンをクリックします。
    (該当する場合、標準VMを選択します。)
  5. ディレクトリボタンをクリックします。
  6. インストールされているJavaのJDKバージョン(JREではない)を参照します。
    (例:C:\Program Files\Java\jdk1.7.0_04)。
  7. 完了および[〜#〜] ok [〜#〜]をクリックします。
  8. Separate JREでJDKを選択し、Closeをクリックします。
  9. Antスクリプトを再実行します—楽しんでください!

これは、私が遭遇した特定のシナリオで機能しました。

76
Luigi DAmico

次のコマンドを使用して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> 仕事。

ご覧ください: http://ant.Apache.org/manual/Tasks/javac.html

17
Ronnie

Java_HOME設定に/ binが含まれていて、Antが/ binを追加している可能性もあります。これにより、exeが見つかりません。それは私に起こった:}

15
tom

必ず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
8
pcomitz

同様の問題に遭遇しました。 MavenビルドでAntタスクを実行するためにリンクし、問題が発生しました。以下の手順で修正しました。

  • Java_HOMEが正しく設定されていることを確認してください。次のようにコマンドラインのWindownsで確認できます:C:> echo%Java_HOME%結果は次のようになります:C:\ Progra〜1\Java\jdk1.6.0_30 \
  • ファイルtools.jarを%Java_HOME%\ libからMavenのlibディレクトリにコピーします。

そしてそれは私のために働いた。

7
Luan Vo

この問題を解決するには、windows-> preferences-> ant-> runtimeでtools.jarファイルを追加します。

5
Shams

Eclipseでは、インストールされたJRE設定をJDKに設定します-プロジェクト内(プロジェクトプロパティ-> Java Build Path-> Libraries))、または環境設定のグローバルデフォルト(Java-> Installed JREs)。 eclispe設定はシステム変数よりも強力です。

4
r2d2

システムおよびユーザーの環境変数について知っていることを願っています。ユーザーの方がシステムよりも優先されます。システム変数にJava_HOMEを設定しており、ユーザー変数に同じエントリが存在する場合、後者のみを取得します。

[マイコンピュータ]を右クリックし、[プロパティに移動]、[詳細設定]タブを選択し、[環境変数]をクリックして、ユーザーおよびシステム環境変数のリストを表示します。

3
vpram86

セミコロンが私を追い払っていました: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 ページにセミコロンを使用するように記載されていることですが、それはそれを壊しているようです。

3

実際に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です

2
kenyee

他のすべてが正しい場合は、次を試してください

  1. ジャンプウィンドウ->設定-> Ant->ランタイム-> ClassPath
  2. [グローバルエントリ]を展開し、ここで利用可能なjdkツールを確認します。
  3. 「C:\ Program Files\Java\jdk1.6.0_45\lib\tools.jar」などの特定のバージョンのJava)から必要なtools.jarを追加します
  4. 次に、結果を作成して確認します。

注:使用したいJavaコンパイラーにtools.jarを追加し、複数のtools.jar(Javaコンパイラー)がプレゼント。

2
vikas pachisia

あなたが持っている場合 Java_HOMEは設定されていますが、タイプミスがあります。jre6パスへの偽の参照も表示されます。

2
d0mw

私は同じ問題に直面していたので、javacタグの実行可能プロパティをjavac.exeの場所に設定することで問題を解決しました。これで問題は解決しました

<javac srcdir="${srcDir}" destdir="${buildDir}" fork="true" executable="C:\Program Files\Java\jdk1.7.0_03\bin\javac"/>
2
user1244663

以下の手順からJDKパスを設定するだけです。

  1. [実行]-> [外部ツール]-> [外部ツールの構成]に移動します。

  2. -> [JRE]を選択してから、ドロップダウンリストから使用可能なJDKを選択します。例jdk1.8.0_25

1
user3391421

同じための簡単な回避策は

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を見つけることができないために発生します。

0
minhas23

この問題が発生するのは一般的です。異なる環境に対して2つの異なるバージョンのJava(Java 6およびJava 7)があるため、システムに特定のJavaホームを設定できません。この問題を解決するために、build.xmlファイルを開くときに実行構成にJDKパスを含めました。このように、2つの異なるビルドファイルはビルドに2つの異なるJavaバージョンを使用します。この問題に対するより良い解決策があると思いますが、少なくとも上記のアプローチではJava_HOME変数の設定を避けます。

0
user1588737

参考までに、私はWindows 7を使用しており、新しいJava_HOME設定を有効にするためにWindowsを再起動する必要がありました。

0
user3113079

組み込みのEclipse jdkを使用してEclipseでantを実行する必要がある場合、build.xmlに以下の行を追加します。

<property name="build.compiler" value="org.Eclipse.jdt.core.JDTCompilerAdapter"/>
0
Andrew TR

環境変数でJava_HOMEをD:\Program Files\IBM\SDP\jdkとして設定します。引用符やセミコロンを付けないでください。それは私のために働いています。解決策を試してください。実際にant.batで適切なJava_HOMEをチェックします。ant.batが見つからない場合は、Java_HOMEがデフォルトのJREを指します。

0
Rajat Saha

同じ問題がありました。

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も使用

0
macw

Jenkinsでプロジェクトを構築するときに、この問題に直面しました。まず、ant.batが見つかりませんでした。これは、システム環境変数のパスにant.batへのパスを追加することで修正されました。その後、antはjdkディレクトリを見つけることができませんでした。これは、my computer > properties > advanced > environment variablesを右クリックしてJava_HOMEという新しい環境変数を作成し、それにC:\Program Files\Java\jdk1.7.0_21という値を割り当てることで修正されました。ユーザー変数でこの環境変数を作成しないでください。システム変数でのみ作成します。
どちらの場合も、システムを再起動する必要がありました。

0
Nav

私も同じ問題に直面していました。 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を指すようにする方法がわかりません。

0
ggaur

同じ問題がありました。 Java_HOMEが指すJDKパッケージにtools.jarがありませんでしたJDK instal.lationにtools.jarがあることを確認してください

(明らかにメッセージエラーは紛らわしいです)

0
ejaenv