首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java 9中的PostConstruct和PreDestroy注释错误怎么解决?

Java 9中的PostConstruct和PreDestroy注释错误怎么解决?
EN

Stack Overflow用户
提问于 2018-06-04 07:20:51
回答 2查看 0关注 0票数 0

试图在Java 9中使用Spring中的两种方法进行注释。

代码语言:javascript
复制
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
.
.
.
@PostConstruct
public void myFoo() {
   System.out.println("postconstruct - foo");
}

@PreDestroy
public void myFoo2() {
   System.out.println("predestroy - foo2");
}

收到以下错误,

代码语言:javascript
复制
Error:(7, 13) java: package javax.annotation is not visible
  (package javax.annotation is declared in module java.xml.ws.annotation, which is not in the module graph)
Error:(8, 13) java: package javax.annotation is not visible
  (package javax.annotation is declared in module java.xml.ws.annotation, which is not in the module graph)

为什么我会收到错误?这些示例的输出在Java 8中运行良好。是否有解决方案?

EN

回答 2

Stack Overflow用户

发布于 2018-06-04 16:12:57

注释位于模块java.xml.ws.annotation中。因为它是一个Java EE模块,所以不推荐使用它在Java 9中删除,并且默认情况下不会解析,因此需要手动添加它--add-modules

在Java 11中,模块将完全消失,并且--add-modules会失败,因为java.xml.ws.annotation不再存在。最好的解决方案是立即用第三方依赖替换它。使用Java Commons Annotations可以在Maven Central上找到它:

代码语言:javascript
复制
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.1</version>
</dependency>
票数 0
EN

Stack Overflow用户

发布于 2018-06-04 17:14:56

Java 9已从其缺省类路径中移除了javax.annotation。这就是为什么你会得到错误。

这里)下载必要的jar文件。并将其添加到构建路径。

假设你正在使用eclipse:

  1. 将下载的jar文件复制到项目的lib文件夹中。
  2. 右键单击项目,选择属性
  3. 在左侧单击Java构建路径
  4. 在对话框的顶部点击Libraries
  5. 单击Classpath然后单击添加JAR
  6. 导航到JAR文件lib / javax.annotation-api-1.2.jar
  7. 单击确定,然后单击应用并关闭
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档