web-dev-qa-db-ja.com

アノテーションプロセッサorg.Eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessorからサポートされているソースバージョンRELEASE_6がsource1.7未満

次の環境でエンタープライズアプリケーションを実行しています。

  • モハラ2.2.7
  • PrimeFaces 5.0 final
  • PrimeFaces Extension 2.0 final
  • OmniFaces 1.8.1
  • JPA 2.1を備えたEclipseLink 2.5.2
  • GlashFish 4.0
  • NetBeans IDE 8.0
  • JDK 1.7

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。

修正されていると思います

15
Tiny

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を自分でコンパイルするかどうか、警告に耐えるかどうか...

14
bdulac