【问题标题】:Hibernate JPAModelGen 5.4.6.Final fails on JDK11Hibernate JPAModelGen 5.4.6.Final 在 JDK11 上失败
【发布时间】:2020-02-01 16:18:02
【问题描述】:

在将我的 JDK 升级到 11 并出现错误后,我无法构建 JPA2 项目,找不到符号。我检查了一下,包名在 11 中发生了变化。所以,例如:

生成的不再在:

javax.annotation

现在,它在:

javax.annotation.processing

我已经升级到最新版本的 hibernate jpamodelgen (5.4.6.Final) 和最新版本的 maven-processor-plugin (3.3.3)。

但是,他们似乎还不支持 JDK11。准确吗?

【问题讨论】:

  • 我对 JPA 一无所知,但如果 javax.annotation.Generated 未找到,则表明您的类路径缺少 JSR-250 通用注释。 Java SE 确实在 Java SE 11 之前定义了 Java EE 定义的 API 的一个子集,但它已被删除(自 9 以来已被弃用)。依赖JDK提供这些注解的现有代码需要下载所谓的“Common Annotations”的独立版本并将其放在类路径中。
  • 这不是问题,问题是生成的源是指
  • 从远处看,注释可能看起来像移动了,但事实并非如此。在 Java SE 9 中添加了 javax.annotation.processing.Generated,以使生成或使用 @Generated 注释但不需要 javax.annotation 包中的任何其他 JSR-250 和 Java EE 定义的注释的工具/代码更容易。当 JSR-250 注释部署在类路径上时,您将拥有两个注释。在 Hibernate 问题跟踪器中兑现这一点似乎是正确的。
  • 好吧,你是对的,这里有一个链接:docs.oracle.com/javase/9/docs/api/javax/annotation/…docs.oracle.com/javase/9/docs/api/javax/annotation/processing/…,那么实际上Hibernate 的JPA2 ModelGen 甚至在技术上都不支持JDK9,它只是发生了工作,因为据我所知,这就是它被用于(标记)的全部。

标签: java hibernate maven java-11 jpamodelgen


【解决方案1】:

我切换到 JDK10,这解决了我使用 JPA 模型生成的构建问题。同时,我正在向 Hibernate 提交错误报告。

注意,我必须依赖 jsr250:

<dependency>
  <groupId>javax.annotation</groupId>
  <artifactId>jsr250-api</artifactId>
  <version>1.0</version>
</dependency>

我将此添加到仅针对 JPA2 项目激活的配置文件中,同时执行 JPA2 modelgen 插件。

错误报告链接: https://hibernate.atlassian.net/browse/HBX-1869

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    相关资源
    最近更新 更多