2014-04-13 57 views
12

我有一個在以下環境中運行的企業應用程序。註釋處理器支持的源版本RELEASE_6 org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor小於source1.7

  • 鑽嘴魚科2.2.7
  • PrimeFaces 5.0最終
  • PrimeFaces擴展2.0最終
  • OmniFaces 1.8.1
  • 的EclipseLink 2.5.2具有JPA 2.1
  • GlashFish 4.0
  • NetBeans IDE中8.0
  • JDK 1.7

我已經從1.6在project.properties文件中的所有三個模塊(Java EE的模塊,EJB模塊和WAR模塊),以對Java EE的支持,改變了源級別1.7 nbproject下7.是不是一個的Maven項目。

  • j2ee.platform=1.7
  • javac.source=1.7
  • javac.target=1.7

此前他們都是1.6。


這些更改後,清潔項目時出現以下警告。

警告:從註釋 處理器 'org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor' 小於-source '1.7'

我支持的源版本 'RELEASE_6'使用EclipseLink元模型生成器1.3.0最終生成靜態元模型。

有沒有辦法擺脫這個警告,而不是降級源代碼級別1.6?與此警告是否有不兼容?


更新:

此警告不再EclipseLink的2.6.1重現性(可自上週四以來,2015年10月15日),與包提供相應的模型生成 - org.eclipse.persistence.jpa.modelgen_2.6.1.v20150916-55dc7c3.jar

目前使用的EclipseLink 2.6.1(JPA 2.1)和JDK 8u45測試在GlassFish 4.1 /的Java EE 7.

我假定它是固定的。

+0

決定你正在使用...你說的EclipseLink元模型還提供了一個鏈接到Hibernate –

+0

我在使用Spring/Hibernate的另一個項目中使用該元模型生成器,很抱歉。元模型生成器由EclipseLink 2.5.1本身提供。 – Tiny

+1

謝謝你的更新!我改變了我的依賴,現在錯誤消失了。 – Nachtgold

回答

12

根據the Java API specification,@SupportedSourceVersion註釋(它是日誌的來源)指定「註釋處理器支持的最新源版本」,而不是最小值。

閱讀關於此主題的discussion on the NetBeans forum,表明您沒有什麼解決方案。我想唯一的解決辦法是改變CanonicalModelProcessor代碼:

爲了使EclipseLink的運行是符合Java 6中,您有 @SupportedSourceVersion(RELEASE_6)

要正確適用於一個Java 7編譯,你應該有 @SupportedSourceVersion(RELEASE_7)

但據我所知,你不是自己編譯EclipseLink。主要問題(以及警告的原因)是軟件提供者(即Eclipse基金會)保證在Java SE 6環境中正確處理代碼。

問題是reported as a JDK錯誤。結論是沒有其他明確的解決方法。

解決方法是指定RELEASE7常量(至少根據API的說法)。但是如果EclipseLink團隊這樣做,他們無法在Java 6環境中編譯。

因此,無論您在自己編譯的EclipseLink與適當的常數,不管你住的警告......

相關問題