maven build使用jdk home\src.zip\javax\annotation\Resource.java不依赖
以下是intellij中显示的错误,但在maven中是相同的: 我的pom具有如下依赖性:maven build使用jdk home\src.zip\javax\annotation\Resource.java不依赖,java,maven,jakarta-ee,annotations,Java,Maven,Jakarta Ee,Annotations,以下是intellij中显示的错误,但在maven中是相同的: 我的pom具有如下依赖性: <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>6.0</version> </dependency> 爪哇 JavaEEAPI 6 这导致查找方法无法找到资源注释。我认为这
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
</dependency>
爪哇
JavaEEAPI
6
这导致查找方法无法找到资源注释。我认为这是类加载问题。JDK类将首先加载,然后再加载类路径中的任何其他类。如果您想覆盖这个,有一个标准机制。正在尝试将API JAR复制到JDK主页上的
/lib/approved
。JavaEE提供了JDK附带的一些不同版本的API
为了克服这个问题,有了“认可API”的概念
Java SE 7将“Java平台的通用注释”列为认可的API:
出于某种原因,Java SE 8不再将“Java平台的通用注释”列为认可的API,但AFAIK仍然支持它(文档错误?):
但是请注意,认可的API概念已被弃用,可能不再适用于Java SE 9:
它可能会被拼图模块所取代
不幸的是,似乎没有任何迁移路径,因此您现在必须使用认可的API概念,即使它已被弃用
以下是NetBeans生成的内容(稍加修改):
也就是说,从JavaSE7开始,JDK版本就支持JDK,所以我猜您使用的是更小的JDK版本
请注意,如果您使用的是Oracle的JDK/JRE版本,JavaSE8是唯一仍然受支持的版本。已达到所有其他版本,如果您需要bug/安全更新,则需要与Oracle签订支持合同
如果是这种情况,我强烈建议如果可能的话升级到Java SE 8。请将stacktrace以文本而不是图像的形式发布到您的帖子中。我在使用JDK 10时也遇到了同样的问题,我仍然会遇到这个错误。我还验证了maven是否使用jdk10。如何解决这个问题呢?@Shannon如前所述,自从JavaSE9以来,已认可的机制不再受支持。请参阅迁移指南:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
</dependency>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
...
</properties>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>${endorsed.dir}</outputDirectory>
<silent>true</silent>
<artifactItems>
<artifactItem>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>7.0</version>
<type>jar</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
[34,14] cannot find symbol
[ERROR] symbol : method lookup()
[ERROR] location: @interface javax.annotation.Resource
[ERROR] -> [Help 1]