为什么找不到 javax.annotation.Resource了?
在 JDK 9 及以后版本,特别是到 JDK 21,javax.annotation.Resource 这样的类已经不再包含在标准的 JDK 中。原因是从 JDK 9 开始,Java 进行了模块化(Project Jigsaw),并移除了部分与 Java EE(现在称为 Jakarta EE)相关的包,例如 javax.annotation。
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包的库,并将其引入你的项目。
- 有些第三方库也提供了对
浙公网安备 33010602011771号