JDK21中找不到 javax.annotation.Resource 了?
在 JDK 9 及以后版本,特别是到 JDK 21,javax.annotation.Resource
这样的类已经不再包含在标准的 JDK 中。原因是从 JDK 9 开始,Java 进行了模块化(Project Jigsaw),并移除了部分与 Java EE(现在称为 Jakarta EE)相关的包,例如 javax.annotation
。
为什么会找不到 javax.annotation.Resource
?
Java 的模块化系统将很多与企业应用相关的 API 移出了 JDK 的标准库。这些类和包原来是属于 Java EE 的一部分,随着 Java 9 的模块化改革和 Java EE 的转移,这些类被分离了出来,转移到 Jakarta EE 项目下,由 Eclipse Foundation 维护。
javax.annotation
包是 Java EE 的一部分,并且已经从 JDK 中移除,迁移到了 Jakarta EE 的命名空间中,使用的包名变成了 jakarta.annotation
。
解决方案
-
使用 Jakarta EE 中的
jakarta.annotation
:- 如果你正在开发企业级应用,推荐使用 Jakarta EE 提供的依赖。可以将
javax.annotation
替换为jakarta.annotation
,新版本的类名为jakarta.annotation.Resource
。
Maven 依赖示例:
<dependency> <groupId>jakarta.annotation</groupId> <artifactId>jakarta.annotation-api</artifactId> <version>2.0.0</version> </dependency>
- 如果你正在开发企业级应用,推荐使用 Jakarta EE 提供的依赖。可以将
-
使用 Java EE 依赖:
- 如果你希望继续使用
javax.annotation
,可以手动添加 Java EE 相关的库,来引入你需要的类。比如,使用以下 Maven 依赖:
Maven 依赖示例:
<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version> </dependency>
- 如果你希望继续使用
-
引入第三方库:
- 有些第三方库也提供了对
javax.annotation
类的支持。可以查找是否有包含javax.annotation
包的库,并将其引入你的项目。
- 有些第三方库也提供了对
总结
在 JDK 21 中,javax.annotation.Resource
已经不再内置。如果你需要继续使用这个类,可以通过引入 Jakarta EE 的 jakarta.annotation
包或 Java EE 的 javax.annotation
API 来解决。推荐迁移到 Jakarta EE 的新命名空间,以确保兼容未来的技术发展。