【发布时间】: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