javac1.8クラスが見つかりません


80

jdk1.5とjdk1.8の2つのjdkをインストールしました。私は次のAntbuild.xml設定ファイルを持っています:

<target name="compileCustomSrc">
    <javac srcdir="src" destdir="build/classes" source="1.5" target="1.5" >
        <classpath>
            <fileset dir="C:/lib/">
                <include name="*.jar" />
            </fileset>
        </classpath>
    </javac>
</target>

jdk1.8をインストールする前に、Eclipseから呼び出されたAntはすべてのソースを正常にコンパイルしました。しかし今、私は次のエラーメッセージを持っています:

クラスが見つかりません:javac1.8

私のJAVA_HOMEとJRE_HOME:

JAVA_HOME = C:\ Program Files(x86)\ Java \ jdk1.5.0_16
JRE_HOME = C:\ Program Files(x86)\ Java \ jre1.5.0_16

EclipseJREで1.5に設定します。Java 1.8はインストール中にいくつかの設定を設定しますか?

回答:


173
クラスが見つかりません:javac1.8

このエラーは、Java8と互換性のない1.9.0未満のApacheAntバージョンで発生することがわかっています。Ant<1.9.0のバージョンを使用している場合は、1.9.xリリースに更新する必要があります。

関連するバグレポートは次のとおりです:https//issues.apache.org/bugzilla/show_bug.cgi?id = 53347

ところで、Java 8でコンパイルしたいだけで、実際のJava 8構文をコンパイルする必要がない場合は、回避策として次の引数をjavacに渡すことができます。これにより、古いバージョンのAntを引き続き使用できます。 :

-Dbuild.compiler=javac1.7

9
この問題が発生しました。指定されたフラグ(-Dbuild.compiler=javac1.7)は、に直接渡さantれた場合にも機能します。
cincodenada 2014

Kristianの答えは正解です。Eclipseでant-launch構成を生成するときに-Dbuild.compiler = javac1.7を追加できます。< bugs.eclipse.org/bugs/show_bug.cgi?id=409358 >を参照してください
Shiva

5
私は見つけました コード。彼らはあなたがJava1.3以下を使用しているかどうかをテストしています。10年以上前の古い古いコード。このため、Oracleが新しい1.xバージョンをリリースするたびにAntが機能しなくなります。Antにはすでに1.4以上が必要です。このチェックをコードから削除する必要があります。
David W.

3
@ DavidW-なぜ彼らはJava1.9と2.0のサポートを追加しなかったので、変更は次の6年または8年間機能します。Java 9は間もなくリリースされ、すべてが再び壊れます。
JWW

2
EclipseのAnt1.9.0のバグは2012年に修正されましたが、Eclipse Kepler(2014!)のAntはまだ1.8.4であるため、この問題は依然として存在します。これはルナでアップグレードされますか、それともまだ待っていますか?(EclipseのWebサイトは、適切な変更の追跡や、どのプラグインのどのバージョンがどのリリースに組み込まれたかを知るのにまったく役に立たないことがわかりました。これはどこにありますか?)
Stuart Rossiter 2015年

14

Kristian Holdhusの回答(正解としてマークされている)の続きとして、代わりにAntjavacタスクのcompiler属性を使用できます。設定compiler="modern"は、下位互換性(1.3まで遡る)と上位互換性の両方である必要があります。

これにより、という名前のJavaシステムプロパティを設定する必要がなくなりますbuild.compiler。タスクにcompiler属性を明示的に設定しない場合にのみ、javacAntはの値をbuild.compilerフォールバックとして使用します。


私は確かにクリスチャン・ホルダスの答えに賛成した。しかし、私はこれが私の状況にとってより良い解決策であることに気づきました。呼び出し元に-Dparamを追加するように強制することで、build.xmlを外部ユーザーに出荷することを困難にしています。また、追加の使用方法を提供する必要がありますが、常に少ないほど良いです:)
Rakesh N

その動作、構築時のメモの表示[javac] warning: C:\Program Files\Java\jre1.8.0_152\lib\rt.jar(java/net/ConnectException.class): major version 52 is newer than 51, the highest major version supported by this compiler. [javac] It is recommended that the compiler be upgraded.など
aswzen 2018

7

私はこれと同じ問題を抱えていました。JAVA_HOMEとJRE_HOMEを正しく設定しました。Ant> 1.9もありました。

それを修正するために私がしたことは、Eclipse to Window-> Preferencesに移動することです。Antを展開し、Runtimeを選択します。デフォルトでは、[クラスパス]タブが選択されているはずで、右側に[AntHome]というボタンがあります。このボタンをクリックして、Antフォルダーを指していることを再確認してください。


3
JAVA_HOME = C:\Program Files (x86)\Java\jdk1.5.0_16
JRE_HOME = C:\Program Files (x86)\Java\jre1.5.0_16

JAVA_HOMEとJRE_HOMEはJava1.5インストールに設定されているため、1.8バイナリ(などjavac)が見つかりません。それらをJava1.8インストールに設定すれば、問題はないはずです。


しかし、私はjdk1.8を使いたくありません。Antがこの設定で1.8コンパイラを使おうとするのはなぜですか?
kamilz 2013

1
「実行」>「Antビルド...」でAntビルドを実行し、「JRE」タブを開いて、スクリプトの実行に使用する「ランタイムJRE」を選択します。
トニートニーチョッパー

「javac」タスクは古いvmsのバイトコードを生成できます。ドコの「target」属性を参照してください。ant.apache.org/ manual / Tasks / javac.html Java1.5は後のVMのバイトコードを生成できません。
マークオコナー

2

Ecliseで試してみたところ、同じエラークラスが見つかりませんでした:javac1.8

システムでANTバージョンを確認しました

> antバージョン

2015年6月29日にコンパイルされたApacheAnt(TM)バージョン1.9.6

コマンドプロンプトからbuild.xmlを実行しようとすると、機能しました。次に、Eclipseで、古いバージョンのANTを参照していることを確認しました。

EclipseでANTHOMEパスを編集しただけで、ここからも機能しました。:)

以下は、EclipseでANTパスを編集する必要がある場所からの画像です。

  1. build.xmlファイルを右クリックします
  2. として実行
  3. 外部ツール構成
  4. クラスパスタブを選択します

ここからANTホームパスを変更します。

ここに画像の説明を入力してください


ANTホームパスを何に変更しましたか?
IgorGanapolsky 2016

1
こんにちは@IgorGanapolsky以前のAntバージョンパスはAnt1.8用でしたが、上の画像に示すように、最新のAntバージョン1.9に更新しました。そしてそれはうまくいった。私があなたの質問に答えたことを望みます。
KulDeep 2016年

1

1.9未満のAntバージョンと互換性のないJava8としてAntを1.9.xリリースに更新します。


0

他のすべての解決策を試しましたが、どれもうまくいきませんでした。私はついにEclipseで自分に合ったアプローチを見つけました:

  • antウィンドウ内の「compileCustomSrc」などのantタスク名を右クリックします。
  • 選択 Run As | External Tool Configurations
  • 次に、JREタブで、Separate JRE: Java SE7Java 7の名前を選択するか、を選択し、を押してApplyからRun

Antタスクが実行され、正しくビルドされます!


0

Antを1.9.xリリースに更新します。Java8は1.9未満のAntバージョンと互換性がないため、またはコマンドが-Dbuild.compiler = javac1.7を入力した後は以下を参照してください。

antリリース-Dbuild.compiler = javac1.7



0

build.XMLがbuild.compilerプロパティに記載されているJavaバージョンを使用しようとするため、ANTを介して戦争を構築する際の問題がbuild.propertiesファイルのJavaバージョンの不一致に関連する場合があります

build.compilerプロパティが意図したJavaバージョンと同じであるかどうかを確認してください。


0

プラグインディレクトリに新しいバージョンのAntを含む新しいバージョンのEclipseをダウンロードできます。次に、Antjarを古いeclipseのプラグインディレクトリにコピーします。Eclipseは自動的に新しいバージョンのAntを指します。これは、古いケプラーと新しいMars2で機能しました。


0

私も同じ問題を抱えていました。そして、プロパティを設定することで、build.xml内でそれを解決することができました。

<property "build.compiler=javac1.7">
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.