Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
maven build使用jdk home\src.zip\javax\annotation\Resource.java不依赖_Java_Maven_Jakarta Ee_Annotations - Fatal编程技术网

maven build使用jdk home\src.zip\javax\annotation\Resource.java不依赖

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 这导致查找方法无法找到资源注释。我认为这

以下是intellij中显示的错误,但在maven中是相同的:

我的pom具有如下依赖性:

<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]