试图在Java 9中使用Spring中的两种方法进行注释。
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");
}
收到以下错误,
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中运行良好。是否有解决方案?
发布于 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上找到它:
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.1</version>
</dependency>
发布于 2018-06-04 17:14:56
Java 9已从其缺省类路径中移除了javax.annotation。这就是为什么你会得到错误。
(这里)下载必要的jar文件。并将其添加到构建路径。
假设你正在使用eclipse:
https://stackoverflow.com/questions/-100001651
复制相似问题