2009-06-04 26 views
63

私はAnt 1.7.0を使用しており、JAVA_HOMEにあるJava 1.6をインストールしています。Antが間違ったJavaバージョンを使用しています

私はJava 1.5を使ってプロジェクトを構築したいので、JAVA_HOMEを私のjava 1.5ディレクトリにエクスポートしました。

java -version 

は「1.5」と表示されます。私がAntを実行すると、Java 1.6が使用されます。

+2

使用しているオペレーティングシステムは? –

+1

バッチスクリプトを作成して、実行方法を正確に指定することができます。コンパイルの場合は、次のようにコマンドのバージョンを指定することができます。

答えて

17

ant manualによると、JAVA_HOMEを設定するとうまくいくはずです - 変更された設定がantに表示されていますか?

また、JAVACMD変数を使用することもできます。

+1

自分自身でa​​tmを発行し、JAVA_HOMEが正しいJDKを指しています。誤ったjavaバージョンを報告しています。 –

12

antを冗長モードで実行:ant -vと手がかりを探します。

+1

これは私を助けました。私はまず、jdk 1.8でlibにプロジェクトを構築しようとしました。私は後で1.7でビルドする必要があることを発見したので、jdk 1.7がインストールされ、JAVA_HOMEが変更されましたが、まだアリは1.8でビルドしていました。 'ant -v'を使うと、antがjdk1.7を正しく使っていることがわかりました。しかし、私の以前の試みのためにビルドには一時フォルダのすべてのクラスが省略されていました。だから私がやったことは、一時フォルダを削除して、それを再作成しました。今度は、私が望んでいたようなjdk 1.7でこの時間を再現しました。誰かを助けるかもしれない –

5

ます。また、ここにドキュメントをチェックし、使用する互換性のレベル(1.4、1.5、1.6)、あなたは「ソース」と「ターゲット」レベル値を設定することができjavacタスクに指定することができます。 Javac task documentation

+1

互換性を保証するために、コンパイル時に '-bootclasspath'オプションも追加してください。 –

14

javacタグのtargetプロパティとsourceプロパティを使用して、ターゲットランタイムを設定できます。以下の例では、バージョン1.4以降をサポートしているコンパイラでバージョン1.4をターゲットにするソースコードをコンパイルします。

<javac compiler="classic" taskname="javac" includeAntRuntime="no" fork=" deprecation="true" target="1.4" source="1.4" srcdir="${src}" destdir="${classes}"> 

注:「SRCDIR」と「DESTDIR」のプロパティ値が他の設定されている場合、ビルドスクリプトで、 例えば<property name="classes" value="c:/classes" />

10

次の手順で、あなたは、Eclipse IDEを使用している場合は、その実現可能性:

  1. 右Antビルドファイル(build.xml)でタスクをクリックしてください。

  2. "Run As"にマウスを移動し、 "External Tool Configurations ..."をクリックします。

  3. は、「引数」に以下を追加します。デフォルトのJREは1.6だったとき、私は最初のアリ・ビューにビルドファイルを追加したいので

    -Dant.build.javac.target=1.5 -Dant.build.javac.source=1.5 
    
67

はちょうどこの問題を持っていた、それは起こりました。

プロジェクト固有のJREはなく、デフォルトは1.5に変更されました。Eclipseも1.5で実行されていても、JAVA_HOMEも1.5でした。コマンドラインからantターゲットを実行すると、JRE 1.5が使用されましたが、Eclipseでは1.6も使用されました。

私はantターゲットを右クリックしてRun As ...を選択し、JREタブのJREを変更する必要がありました。この設定は後続の実行で記憶されます。

+5

私はちょうど質問がEclipseをまったく言及しなかったことに気づいた。私の答えは、Eclipseを使用しているときに記述されている問題です。 –

+1

数時間のご迷惑をおかけしていただきありがとうございます。 –

+0

eclipseを使用していない場合は、私の答えを一番下にチェックアウトしてください。 –

1

eclipseからAntを実行すると、eclipseはclass-path(ビルドパス)で設定されたjdkまたはjreを使用します。

+0

デフォルトではいですが、すべてのantファイルごとに異なる設定ができるため、すべてが重要である可能性があることを確認してください... –

+6

JavaバージョンのAntが使用していることを確認するには: '' – dmolony

+0

$ {ant.java.version}について学ぶことは素晴らしいことでした。ありがとうございました! – javydreamercsw

5

これはかなり古い質問ですが、今後の参考のためにメモを追加します。

私は同様の問題があり、PATH変数でエクスポートの順序を変更することで修正しました。

私は(これは単なる一例である)ことによって、私のPATHに文字列を連結する方法を使用していた。例えば

$> export PATH='$PATH:'$JAVA_HOME 

私の変数PATHはすでにそれでJavaを持っていた場合、最後の値は次のようになり無意味なので、順序は重要です。これを解決するために、まず変数を追加してPATHを追加して反転させました。

この考え方に従って、私はANT_HOMEがエクスポートされた順序を逆転させました。 ANT_HOMEの前にJAVA_HOMEを追加しています。

これはちょうど偶然の可能性がありますが、それは私のために働いた。

+0

これも私に起こった。どのエントリがJAVA_HOMEと競合しているのかわからなかったのですが、PATHの先頭に置くとうまくいきました。 – Inversus

26

Easy! Eclipseで

  • をクリックして、あなたのbuild.xml

  • クリック "として実行" をクリックし、 "外部ツールの構成..."

  • 選択タブJRE。使用しているJREを選択します。

タスクを再実行しても問題ありません。

+0

ありがとう、これはまさに私がする必要があったものです。 –

1

javacタグについては、以下の2つのプロパティを使用します。プロパティの

fork="yes" 
executable="full-path-to-the-javac-you-want-to-use". 

、について説明を見つけることができるhere

4

ビルドファイル:

<target name="print-version"> 
    <echo>Java/JVM version: ${ant.java.version}</echo> 
    <echo>Java/JVM detail version: ${java.version}</echo> 
</target> 

出力:

[echo] Java/JVM version: 1.5 
[echo] Java/JVM detail version: 1.5.0_08 
0

According to the Ant Documentationは、あなたは下のAntを実行したいJREバージョンのjava.exeへのパスを完了するために、JAVACMD環境変数を設定します。

0

デフォルトでは、AntはJREをワークスペースJREバージョンと見なします。必要なバージョンに応じて以下のように変更する必要があります。 Eclipseで

  • 右、あなたのbuild.xmlをクリックし、 "別のユーザーとして実行" をクリックしをクリックして、 "外部ツール 設定を..." タブJREを選択します。

  • 使用しているJREを選択してください。

  • タスクを再実行しても問題ありません。

関連する問題