Javax.Annotation类和Java 11 JDK

javax.annotation classes and Java 11 JDK(Javax.Annotation类和Java 11 JDK)

本文介绍了Javax.Annotation类和Java 11 JDK的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  • 带有目标1.8的maven-编译器-plugin 2.5.1(在java8中编译WAR)
  • Tomcat9
  • 打开JDK 11

但在启动时获取持续错误:

合并Bean定义的后处理失败;嵌套异常为 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-编译器-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>

请帮助寻找解决方案!!

推荐答案

对我来说,问题在于libs:javax.Annotation-api^1.3.2和jsr250-api:1.0之间的冲突。在没有lookup()方法的jsr250-api中有一个javax.注解.@Resource注解!在一些运行环境中,jsr250的@Resorse首先被加载,而在另一些运行环境中

合并Bean定义的后处理失败;嵌套异常为 Java.lang.NoSuchMethodError: Javax.annotation.Resource.lookup()Ljava/lang/String;

解决方案:使用maven exclusion删除其中一个库。

这篇关于Javax.Annotation类和Java 11 JDK的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:Javax.Annotation类和Java 11 JDK

基础教程推荐