javax.annotation классы и Java 11 JDK - PullRequest
0 голосов
/ 02 июля 2019

Я мигрирую с Java 8 на Java 11 и столкнулся с проблемой.Я должен использовать:

  • maven-compiler-plugin 2.5.1 с целью 1.8 (компиляция WAR в java8)
  • tomcat9
  • Открыть JDK 11

Но при запуске появляется постоянная ошибка:

Ошибка постобработки определения объединенного компонента;Вложенным исключением является 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>

Пожалуйста, помогите найти решение !!

Ответы [ 2 ]

3 голосов
/ 02 июля 2019

При переходе на более ранние версии 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>
0 голосов
/ 04 июля 2019

Для меня проблема была в конфликте между библиотеками: javax.annotations-api ^ 1.3.2 и jsr250-api: 1.0.Существует javax.annotation. @ Аннотация ресурса в jsr250-api БЕЗ метода lookup ()!В некоторых запущенных средах сначала был загружен @Resorse jsr250, в других - javax.annotations-api.В первом случае произошла моя ошибка:

Ошибка постобработки определения объединенного компонента;вложенным исключением является java.lang.NoSuchMethodError: javax.annotation.Resource.lookup () Ljava / lang / String;

Решение: избавиться от одной из библиотек, используя исключение maven.

...