Ошибка при запуске встроенного сервера при переходе на Java11

У меня возникают проблемы при переходе на Java 11, когда в моем приложении запущен встроенный сервер.

Итак, чтобы перейти с JAVA 1.8 на java 11. Я обновился до tomcat 9 и проверил, что мое приложение нормально работает с java 1.8 и Tomcat 9. Но когда я перешел на Java 11, я могу создать свое приложение с помощью Maven, но при запуске встроенного сервера я получаю ошибки ниже.

SEVERE: Exception sending context initialized event to listener instance of class [org.apache.webbeans.servlet.WebBeansConfigurationListener]
org.apache.webbeans.exception.WebBeansDeploymentException: java.lang.IllegalArgumentException
    at org.apache.webbeans.corespi.scanner.AbstractMetaDataDiscovery.scan(AbstractMetaDataDiscovery.java:144)
    at org.apache.webbeans.lifecycle.AbstractLifeCycle.bootstrapApplication(AbstractLifeCycle.java:132)
    at org.apache.webbeans.lifecycle.AbstractLifeCycle.startApplication(AbstractLifeCycle.java:104)
    at org.apache.webbeans.web.lifecycle.WebContainerLifecycle.startApplication(WebContainerLifecycle.java:87)
    at org.apache.webbeans.servlet.WebBeansConfigurationListener.contextInitialized(WebBeansConfigurationListener.java:85)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4663)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5131)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1382)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1372)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:907)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1382)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1372)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:907)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:423)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:933)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Tomcat.start(Tomcat.java:398)
    at com.myApplication.tnt.tools.servers.EmbeddedServer.start(EmbeddedServer.java:133)
    at com.myApplication.tnt.tools.servers.EmbeddedServer.main(EmbeddedServer.java:47)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)
    Caused by: java.lang.IllegalArgumentException
    at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
    at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
    at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)

Я использую Tomcat 9.0.14

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>9.0.14</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-logging-juli</artifactId>
        <version>9.0.0.M6</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <version>9.0.14</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jasper</artifactId>
        <version>9.0.14</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jasper-el</artifactId>
        <version>9.0.14</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jsp-api</artifactId>
        <version>9.0.14</version>
        <scope>test</scope>
    </dependency>

Я не уверен, что CDI вызовет какие-либо проблемы, но я также использую CDI в своем проекте.

Обновление этой проблемы с использованием зависимостей openwebeans, которые я использую

        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-spi</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-impl</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-web</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-tomcat7</artifactId>
            <version>1.6.2</version>
        </dependency>

Некоторые CDI Jar, которые я использую в своем приложении, упомянуты ниже:

        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>2.22.2</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.ext.cdi</groupId>
            <artifactId>jersey-cdi1x</artifactId>
            <version>2.22.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-annotation_1.2_spec</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-interceptor_1.2_spec</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-atinject_1.0_spec</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jcdi_1.1_spec</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jms_1.1_spec</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
            <version>1.1.1</version>
        </dependency>

Я не уверен, связаны ли эти проблемы с CDI или нет, но у кого-то есть информация о версиях jar CDI, которые совместимы с Java 11.

Судя по трассировке стека (Caused by: java.lang.IllegalArgumentException at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)), это в основном потому, что версия ASM, лежащая в основе зависимости tomcat, не обновлена. Вы должны искать совместимую с Java-11 версию tomcat, чтобы решить эту проблему.

Naman 17.12.2018 17:01

Не могли бы вы упомянуть версию tomcat, совместимую с java 11.

Saurabh 17.12.2018 17:12

Ну, честно говоря, я точно не являюсь пользователем Tomcat. Тем не менее, причину, по которой я предположил, можно подтвердить, посмотрев на транзитивные зависимости зависимости tomcat в вашем коде, особенно для asm. Если бы вы могли поделиться версией в транзитивных зависимостях для этой библиотеки, вы могли бы также предсказать ответ.

Naman 17.12.2018 18:23

Спасибо за ваш ответ. Я попытался проверить транзитивные зависимости и нашел ASM в «openwebbeans» [INFO] + - org.apache.openwebbeans: openwebbeans-impl: jar: 1.6.2: compile [INFO] | + - org.apache.xbean: xbean-finder-shaded: jar: 4.3: compile [ИНФОРМАЦИЯ] | \ - org.apache.xbean: xbean-asm5-shaded: jar: 4.3: compile. Итак, версия, которую я использую в своем приложении, - 4.3.

Saurabh 18.12.2018 06:58

Не могли бы вы попробовать использовать явная зависимость на <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-asm7-shaded</artifactId> <version>4.12</version> </dependency> и исключить транзитивную зависимостьorg.apache.xbean:xbean-asm5-shaded, учитывая, что asm7 совместим с java 11, это должно по крайней мере избавить вас от этой ошибки.

Naman 18.12.2018 07:21

Эта ошибка устранена, но теперь я получаю еще одну СЕРЬЕЗНУЮ ошибку: ошибка настройки прослушивателя приложения класса [org.apache.webbeans.servlet.WebBeansConfigurationListener] java.lang.NoClassDefFoundError: javax / enterprise / inject / spi / ProcessSyntheticBean Вызвано: java .lang.ClassNotFoundException: javax.enterprise.inject.spi.ProcessSyntheticBean

Saurabh 18.12.2018 08:42

Я подозревал это, как делал предыдущий комментарий. (по крайней мере избавит вас от этой ошибки.) По этой причине я бы посоветовал подождать или еще раз изучить репозитории Tomcat и проблемы, связанные с продолжающейся работой по его совместимости с Java11.

Naman 18.12.2018 09:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
347
0

Другие вопросы по теме