Intellij:如何为 javax.annotation.PostConstruct 添加 java.annotation 模块
Intellij: how to add java.annotation module for javax.annotation.PostConstruct
我把项目使用的SDK升级到Java10.下面的import语句导致错误:
进口javax.annotation.PostConstruct;
Package 'javax.annotation' is declared in module 'java.xml.ws.annotation', but module 'application' does not read it
按 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+单击 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
可用,并且从我读到的内容 and and and the way to do it is by adding a JAR to the module path, and from what I've read here 必须通过模块中的指令引用新添加的模块-info.java .
IntelliJ IDEA 的问题在于它知道 JDK/jmods/java.xml.ws.annotation.jmod
中的模块,即使在运行时它会被禁用。
只需在 IntelliJ IDEA 项目结构中的 Java SDK 定义中注释掉 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 IDEA,转到您的 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
。
重启后一切正常
我把项目使用的SDK升级到Java10.下面的import语句导致错误:
进口javax.annotation.PostConstruct;
Package 'javax.annotation' is declared in module 'java.xml.ws.annotation', but module 'application' does not read it
按 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+单击 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
可用,并且从我读到的内容
IntelliJ IDEA 的问题在于它知道 JDK/jmods/java.xml.ws.annotation.jmod
中的模块,即使在运行时它会被禁用。
只需在 IntelliJ IDEA 项目结构中的 Java SDK 定义中注释掉 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 IDEA,转到您的 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
。
重启后一切正常