web-dev-qa-db-ja.com

javax.annotationクラスとJava 11 JDK

私はJava 8からJava 11に移行し、問題に直面しました。私は以下を使用する必要があります。

  • maven-compiler-plugin 2.5.1とターゲット1.8(Java8でWARをコンパイル)
  • Tomcat9
  • Open 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-compiler-plugin configです:

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

同じ問題がありました。

私はこれらの行を追加し、成功しました:

<build>
...
        <extensions>
            <!-- Prevents this error, with JDK 13: -->
            <!-- NoSuchMethodError: 'Java.lang.String javax.annotation.Resource.lookup()' -->
            <extension>
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
                <version>1.3.2</version>
            </extension>
            <extension>
                <groupId>javax.annotation</groupId>
                <artifactId>jsr250-api</artifactId>
                <version>1.0</version>
            </extension>
        </extensions>
</build>
0
etienne_sf