次の環境でエンタープライズアプリケーションを実行しています。
3つのモジュールすべて(Java EEモジュール、EJBモジュール、WARモジュール)のnbproject
の下にあるproject.properties
ファイルのソースレベルを1.6から1.7に変更し、Java EE 7.これはMavenプロジェクトではありません。
j2ee.platform=1.7
javac.source=1.7
javac.target=1.7
以前は、すべて1.6でした。
これらの変更後、プロジェクトのクリーンアップ中に次の警告が表示されます。
警告:-source '1.7'未満の注釈プロセッサ 'org.Eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor'からサポートされているソースバージョン 'RELEASE_6'
EclipseLinkメタモデルジェネレーター 1.3. finalを使用して静的メタモデルを生成しています。
ソースレベルを1.6にダウングレードする以外に、この警告を回避する方法はありますか?この警告に非互換性はありますか?
更新:
この警告は、EclipseLink 2.6.1 (2015年10月15日木曜日以降に利用可能)で、バンドルによって提供されるそれぞれのメタモデルジェネレーター-org.Eclipse.persistence.jpa.modelgen_2.6.1.v20150916-55dc7c3.jar
で再現できなくなりました。
現在GlassFish 4.1でEclipseLink 2.6.1(JPA 2.1)とJDK 8u45を使用してテスト済み/ Java EE 7。
修正されていると思います
Java API仕様 によると、@ SupportedSourceVersionアノテーション(ログのオリジン)は、「アノテーションプロセッサがサポートする最新のソースバージョン」を指定します。最小。
このトピックについて NetBeansフォーラムのディスカッション を読むと、いくつかの解決策があることを示しています。唯一の解決策は CanonicalModelProcessor のコードを変更することだと思います:
EclipseLinkランタイムがJava 6に準拠するためには、 @ SupportedSourceVersion(RELEASE_6)
Java 7コンパイルに適切に適合させるには、 @ SupportedSourceVersion(RELEASE_7) が必要です
しかし、私が理解しているように、あなたは自分でEclipseLinkをコンパイルしていません。主な問題(および警告の理由)は、ソフトウェアプロバイダー(つまり、Eclipse Foundation)がJava SE 6環境でのコードの適切な処理を保証することです。
問題は JDKとして報告 バグでした。結論は、他に明確な回避策はないということです。
解決策は、RELEASE7定数を指定することです(少なくともAPIの内容に従って)。しかし、EclipseLinkチームがそうするならば、彼らはJava 6環境でコンパイルできません。
したがって、適切な定数を使用してEclipseLinkを自分でコンパイルするかどうか、警告に耐えるかどうか...