javax.annotation 类和 Java 11 JDK

标签 java maven java-11 maven-compiler-plugin

我从 Java 8 迁移到 Java 11 时遇到了这个问题。 我应该使用:

  • maven-compiler-plugin 2.5.1 with target 1.8 (在 java8 中编译 WAR)
  • tomcat9
  • 打开 JDK 11

但是在启动时不断出现错误:

Post-processing of merged bean definition failed; nested exception is java.lang.NoSuchMethodError: javax.annotation.Resource.lookup()Ljava/lang/String;

我找到了多种修复方法。试图添加依赖:

        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>javax.annotation-api</artifactId>
            <version>1.3.2</version>
        </dependency>

尝试添加扩展:

   <extensions>
        <extension>
            <groupId>javax.annotation</groupId>
            <artifactId>javax.annotation-api</artifactId>
            <version>1.3.2</version>
        </extension>
    </extensions>

这些都没有帮助。

这是 maven-compiler-plugin 配置:

    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <encoding>UTF-8</encoding>
        </configuration>
    </plugin>

请帮忙找出解决办法!!

最佳答案

当提前迁移 3 个 Java 版本时,首先应该考虑的是更新所有主要依赖项。

maven-compiler-plugin -> 当前版本是 3.8.1,

2.5.1 已经 7 岁了。

尝试以下方法解决此错误:

java.lang.NoSuchMethodError: javax.annotation.Resource.lookup()Ljava/lang/String;

保持依赖:

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.1</version>
</dependency>

并将其显式添加为模块:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <release>11</release>
        <compilerArgs>
            <arg>--add-modules</arg>
            <arg>java.xml.ws.annotation</arg>
        </compilerArgs>
    </configuration>
</plugin>

关于javax.annotation 类和 Java 11 JDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56855335/

相关文章:

java - 在 IntelliJ 调试中保存对象的状态?

java - 为什么 Hybris 提供不安全的 http maven 存储库 URL?为什么我们不能覆盖它?

c++ - 为什么用nar-maven编译静态库时要加compiler option/MD?

mysql - 如何解决这个 pom.xml 问题? (连接到数据库)

java - 允许 Java JDK 11 HttpClient 的不安全 HTTPS 连接

java - 如何将 logger.error 报告的错误转储到文件中

Java 微基准测试工具与 System.getNanotime()

maven - 如何将 jar、源代码和 Javadoc 添加到本地 Maven 存储库?

scala - akka-http web-app 无法在最小的 docker jre 11 上启动(scala12 akka-http 的哪些 java 模块)?

java - 如何使用 AvroParquetWriter 并通过 AmazonS3 api 写入 S3?