注释处理器 org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor 支持的源版本 RELEASE_6 低于 sour

Posted

技术标签:

【中文标题】注释处理器 org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor 支持的源版本 RELEASE_6 低于 source1.7【英文标题】:Supported source version RELEASE_6 from annotation processor org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor less than source1.7 【发布时间】:2014-05-27 11:50:14 【问题描述】:

我有一个企业应用程序在以下环境中运行。

Mojarra 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

我已将所有三个模块(Java EE 模块、EJB 模块和 WAR 模块)中 nbprojectproject.properties 文件中的源级别从 1.6 更改为 1.7,以支持 Java EE 7。它是 不是一个 Maven 项目。

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

之前它们都是 1.6。


进行这些更改后,清理项目时会出现以下警告。

警告:注释中支持的源版本“RELEASE_6” 处理器 'org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor' 小于 -source '1.7'

我正在使用 EclipseLink 元模型生成器 1.3.0final 来生成静态元模型。

除了将源级别降级到 1.6 之外,还有其他方法可以消除此警告吗?这个警告有什么不兼容的地方吗?


更新:

此警告在 EclipseLink 2.6.1(自 2015 年 10 月 15 日星期四起可用)中不再重现,使用捆绑包提供的相应元模型生成器 - org.eclipse.persistence.jpa.modelgen_2.6.1.v20150916-55dc7c3.jar

目前在 GlassFish 4.1/Java EE 7 上使用 EclipseLink 2.6.1 (JPA 2.1) 和 JDK 8u45 进行了测试。

我认为它是固定的。

【问题讨论】:

决定你正在使用哪个......你说的是 EclipseLink 元模型但提供了一个指向 Hibernate 的链接 我在另一个带有 Spring/Hibernate 的项目中使用该元模型生成器,抱歉。元模型生成器由 EclipseLink 2.5.1 本身提供。 感谢您的更新!我改变了我的依赖,现在错误消失了。 【参考方案1】:

根据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,是否接受警告...

【讨论】:

以上是关于注释处理器 org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor 支持的源版本 RELEASE_6 低于 sour的主要内容,如果未能解决你的问题,请参考以下文章

你如何使用intellij调试java注释处理器?

将速度配置为注释对 Eclipse 的处理器依赖

使用 Ant 的 Java 6 注释处理配置

在 Eclipse 中调试注释处理器

自定义注释处理器的 Maven 编译器插件问题

无法在 Kotlin 中构建注释处理器