import javax.annotation.* 无法在 Eclipse 的 Java 10 编译器中解析
Posted
技术标签:
【中文标题】import javax.annotation.* 无法在 Eclipse 的 Java 10 编译器中解析【英文标题】:import javax.annotation.* cannot be resolved in Eclipse's Java 10 Compiler 【发布时间】:2019-01-08 20:30:33 【问题描述】:在我的机器(Windows 10)中,Java有两个版本,Java 1.8(JRE和JDK)和Java 10(JRE和JDK)。
以前 IF 我将 Eclipse 设置为:
Java 编译器(JDK 兼容性):1.8 Java 构建路径(JRE 系统库):1.8如果我使用以下 Spring 代码
import javax.annotation.PostConstruct;
...
...
...
@PostConstruct
...
...
一切正常正常。完全没有错误。
但是,如果我将 Eclipse 设置为:
Java 编译器(JDK 兼容性):10 Java 构建路径(JRE 系统库):10现在,import
语句抛出错误消息:
The import javax.annotation.PostConstruct cannot be resolved
这个错误也会发生在@PreDestroy
注解上。
为什么会这样? Java 10 会发生什么?如果我仍然想保留 Java 编译器和 JRE 系统库版本到 Java 10,如何解决这个问题?
谢谢。
【问题讨论】:
更改设置后是否在 Eclipse 中清理了项目? 不,我不知道怎么做,我是初学者,怎么做? 单击Project > Clean...
不确定它是否能解决您的问题,但当 Eclipse 找不到我的导入时,它在 99% 的情况下对我有用。
我确实清理了它,但错误仍然存在
【参考方案1】:
您可以将接口InitializingBean
和DisposableBean
添加到您的类中。
然后你可以使用methods:afterPropertiesSet()
和destroy()
。
【讨论】:
【参考方案2】:缺少Javax Annotation
https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api/1.3.2
jar 或者依赖可以在这里找到。
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
【讨论】:
【参考方案3】:您需要通过 Window -->Preferences-->Java 将 Eclipse 指向 Java 8 并添加 JDK 1.8 bin 路径。完成后,项目将自动构建并解决问题。
【讨论】:
【参考方案4】:发生这种情况是因为 @PostConstruct 和 @preDestroy 在 java 9 之后已被弃用,所以最好不要使用它们,而是使用接口来解决这个问题
【讨论】:
【参考方案5】:将javax.annotation-api-1.3.2.jar
添加到您的类路径中。它也适用于 JDK 10。
要更清楚地了解替代方法,请通过以下视频链接:
https://www.youtube.com/watch?v=jOYSRwwMLX8&list=PLzS3AYzXBoj9IBdtgXRSyZEwlU2QV-mGG&index=6
【讨论】:
【参考方案6】:您可以尝试将注解依赖添加到 pom.xml,以便它们可用于 Spring:
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
【讨论】:
问题是这个项目没有使用 Maven,手动下载 jar,目前我想这样做,还有其他选择吗?这是一个 Eclipse 错误还是只是 Java 10 没有附带javax.annotation
?
如果我理解正确的注释从 Java 9+ 中被弃用并且 Spring 默认看不到它。也许您可以尝试安装 Spring 5.1(似乎即使使用 Java 11 也可以运行 - github.com/spring-projects/spring-framework/wiki/…)
这仍然在 Tomcat 中引起了我的问题,所以我只需要回到 java 8 就解决了我的问题。以上是关于import javax.annotation.* 无法在 Eclipse 的 Java 10 编译器中解析的主要内容,如果未能解决你的问题,请参考以下文章
Resource注解无法导入依赖使用javax.annotation的注解类
Java EE 6 @javax.annotation.ManagedBean 与 @javax.inject.Named 与 @javax.faces.ManagedBean