Eclipseがインターフェースメソッドの@Overrideについて文句を言うのはなぜですか?


134

スーパークラスメソッドではなく、インターフェイスメソッド@Overrideをオーバーライドするメソッドを使用する既存のプロジェクトがあります。これをコードで変更することはできませんが、Mavenで引き続きビルドできるため、Eclpseがアノテーションについて不平を言わないようにしてください。

このエラーを無効にするにはどうすればよいですか?

注:プロジェクトの要件により、Java 1.5用にコンパイルする必要があります。


しかし、ソースがJava 6をターゲットにしているようですか?
akarnokd 2009年

確かに。Java 5は、macサポートの遅い要件でした。
ステファンケンダル

回答:


268

@Overrideインターフェースで宣言されたメソッドを実装するメソッドでのアノテーションの使用は、Java 6以降でのみ有効です。これはJava 5のエラーです。

IDEプロジェクトがJava 6 JREを使用するように設定されていること、および「ソース互換性」が1.6以上に設定されていることを確認します。

  1. ウィンドウ>設定ダイアログを開く
  2. 「Java」>「コンパイラー」に移動します。
  3. そこで、「コンパイラー準拠レベル」を1.6に設定します。

Eclipseは特定のプロジェクトのこれらのグローバル設定をオーバーライドできるので、それらも確認してください。


更新:

Java 5でのエラーはEclipseだけのものではありません。javacコマンドラインから直接使用すると、同じエラーが発生します。有効なJava 5ソースコードではありません。

ただし、-target 1.5JDK 6のオプションを指定できますjavac。これにより、Java 6ソースコードからJava 5バージョンのクラスファイルが生成されます。


いいえ、ありません。エラーメッセージ「javac:ソースリリース1.6にはターゲットリリース1.6が必要です」が生成されます。
マイケルボルグワート

9
いいえ、ありません。コンパイルされたクラスファイルを生成します。-source 1.6オプションを指定した場合にのみ、このエラーが発生します。これは、これを機能させるために必要ではありません。
エリクソン2009年

とにかく、私はとにかく手動でビルドするので、ソースレベルを1.6のままにすることができます。混合構成を機能させることができなかったので、これが最も簡単に思えます。
Stefan Kendall

@erickson -target -sourceダウングレードは1.7から1.6でも機能しますか?stackoverflow.com/q/8869869/632951
Pacerier '18年

これは1.8 JDKでは動作しないようです。-source 1.6 -target 1.5のコメント:javac:ソースリリース1.6にはターゲットリリース1.6が必要
Don Hatch

39

次のようにします。

プロジェクト->プロパティ-> Javaコンパイラ->

  • プロジェクト固有の設定を有効にする-「はい」
  • コンパイラー準拠-1.6
  • 生成されたクラスファイルとソースの互換性-1.5

おかげで-各プロジェクトは、それが自分の設定のしていることに気づかなかった
whostolemyhat

2
私の場合、このオプションを無効にする必要がありました。
むてんろし2014年

12

プロジェクトにファセットがあるかどうかも確認してください。そこでJavaバージョンがオーバーライドされる可能性があります。


1
スコア!あなたの言う通り、私のプロジェクトファセットはグローバルコンプライアンス設定を上書きしていました。ありがとう!
bpawlowski

9

プロジェクト固有の設定が有効になっている可能性があります。プロジェクトを選択しProject > Properties > Java Compiler、または変更して上記の対応を忘れてはならないし。 それが機能しない場合は、Eclipseからプロジェクトを削除し、ファイルを削除します。そして日食。それは私のために働いたuncheckEnable project specific settingsJdk 1.6JRE
.settings folders.project.classpathclean and build the project, import it back into eclipse and then reset your Java compiler. Clean and build your project


7

Java 6構文を受け入れるようにコンパイラー設定を変更し、Java 5出力を生成することができます(覚えています)。ランタイムで必要な場合は、「生成されたクラスファイルの互換性」を少し低く設定します。 更新:私はEclipseをチェックしましたが、ソースの互換性を1.6に、クラスの互換性を1.5に設定すると不平を言います。1.6が許可されていない場合は、通常、ソース内の問題のある@Overrideアノテーションを手動でコメント化します(これはあなたのケースには役立ちません)。

Update2: 手動ビルドのみを行う場合は、元のプロジェクトを新しいプロジェクトにコピーし、Javaソースから@Overrideアノテーションを削除して、EclipseでClean Projectをクリックするだけの小さなプログラムを作成できます。


詳細を教えてください。
Stefan Kendall

それはエリクソンが述べたのと同じページにあります。
akarnokd 2009年

プロジェクトのサイズは数GBです。単純な「コピー」は実際的ではありません。:/
ステファンケンダル

この場合、変更の許可を求める必要があります。または、1.5互換ソースのブランチを作成し、Javaファイルを手動で修正します。
akarnokd 2009年

1

Retroweaverを試し、Java6クラスからJava5バージョンを作成することもできます。


1

Eclipseを使用して、「@ Override」のすべてのインスタンスを検索および置換(削除)します。次に、「クリーンアップ」を使用して、インターフェース以外のオーバーライドを追加します。

手順:

  1. ソースファイルを含むプロジェクトまたはフォルダーを選択します。
  2. [検索]> [検索...](Ctrl-H)に移動して、[検索]ダイアログを表示します。
  3. [ファイル検索]タブに移動します。
  4. 「含むテキスト」に「@Override」、「ファイル名パターン」に「* .java」を入力します。「置換...」、「OK」の順にクリックして、「@ Override」のすべてのインスタンスを削除します。
  5. 「ウィンドウ」>「設定」>「Java」>「コードスタイル」>「クリーンアップ」に移動して、新しいプロファイルを作成します。
  6. プロファイルを編集し、「Missing Code> Add missing Annotations> @Override」以外のすべてのチェックを外します。[インターフェイスメソッドの実装]がオフになっていることを確認してください。
  7. ソースファイルを含むプロジェクトまたはフォルダーを選択します。
  8. [ソース]> [クリーンアップ...](Alt + Shift + s、次にu)、[完了]の順に選択して、インターフェース以外のオーバーライドを追加します。

0

私はあなたの問題を理解しました、あなたのjdkをあなたのjdkから1.5以上に変更してください


0

IDEプロジェクトがJava 6 JRE以降を使用するように設定されていることを構成することにより、Eclipseエラーが削除されない場合があります。私にとっては、Eclipe IDEの再起動が役立ちました。


0

ウィンドウタブからコンパイラー準拠設定を1.6または1.7に変更し、さらにJava、コンパイラー、コンパイラー準拠の順に設定した後でも、この問題が発生していました。プロジェクトフォルダーに移動し、Javaを右クリックして、コンパイラーのコンプライアンスを1.6以上に設定する必要があるという考えです。これでうまくいきました。

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