我正在为 Java11 实现一个模块,并希望使用来自 JSR250 的注释(javax.annotation.PostConstruct 和 javax.annotation.PreDestroy)。
我已经更改了相应的依赖项:
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
</dependency>
为此:
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
Artifact javax.annotation-api-1.3.2.jar
包含在 META-INF/MANIFEST.MF
这一行中:
Automatic-Module-Name: java.annotation
因此,我尝试将其添加到我的 module-info.java 文件中:
requires java.annotation;
但是,我收到此导入错误:
import javax.annotation.PostConstruct;
错误信息是:
The type javax.annotation.PostConstruct is not accessible
我已经研究了以下相关问题,但仍然无法解决我的问题:
- I can't use @PostConstruct and @PostDestroy with Java 11
- Intellij: how to add java.annotation module for javax.annotation.PostConstruct (请注意,我使用的是带有 JDK11 的 Eclipse,它不包含模块
java.xml.ws.annotation
)。
最佳答案
错误仅发生在 Eclipse 中。 实际上,其他不相关的编译错误会在 Eclipse 中造成一些副作用。解决这些问题并刷新和清理项目后,所描述的错误神奇地消失了。 特别感谢@howlger 和@Naman 为我指明了正确的方向。
关于java - 在 Java11 模块中使用 @PostConstruct 或 @PreDestroy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412864/