我将我的项目使用的SDK升级为Java 10。
进口javax.annotation.PostConstruct;
包'javax.annotation‘是在模块’java.xml.ws.注释‘中声明的,但是模块'application’不读取它。

通过点击ALT+ENTER让Intellij修复它,我收到了以下选项:

我选择了Add Maven Dependency...,下面的依赖项被添加到pom.xml中。
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>查看新添加的JAR的MANIFEST.MF,我注意到模块名为java.annotation。

因此,我将requires java.annotation添加到模块-info.java中。
module application {
requires java.annotation;
}当我在CTRL+clicked on requires java.annotation时:

Intellij正确地导航到JAR:

因此,看来我的模块名是正确的,并且我的模块可以使用javax.annotation:javax.annotation-api。不幸的是,import javax.annotation.PostConstruct上的错误并没有消失。为了确认我的模块描述符是否正常工作,我添加了其他指令,所有指令都正常工作。我还添加了指令requires java.xml.ws.annotation,

这使得导入语句错误消失,但是,当然,这不是一个令人满意的解决方案,因为java.xml.ws.annotation被废弃并标记为删除。

对于如何解决这个问题,有什么想法吗?我需要能够将模块java.annotation提供给模块application,从我已经阅读过的这里和这里以及这里和这里中可以看出,方法是向模块路径中添加一个JAR,而从我所读到的这里中,必须通过模块-info.java中的指令引用新添加的模块。
发布于 2018-10-24 19:28:16
IntelliJ思想的问题在于它知道JDK/jmods/java.xml.ws.annotation.jmod中的模块,即使在运行时它将被禁用。只需在Java定义中注释掉Java项目结构中的java.xml.ws.annotation jmod即可。
详细步骤:
添加Maven依赖项:
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>和module-info依赖关系:
requires java.annotation;就像你已经做的那样。
然后,停止IntelliJ的想法,转到您的IntelliJ JDK配置文件(即C:\Users\YOUR_NAME\.IntelliJ2018\config\options\jdk.table.xml,并使用java.xml.ws.annotation.jmod引用注释行):
<!-- <root url="jrt://C:/Java-Training/JDK!/java.xml.ws.annotation" type="simple" /> -->IntelliJ将不再见java.xml.ws.annotation。重启后,一切都会好起来的。
https://stackoverflow.com/questions/52084698
复制相似问题