Как избавиться от Невозможно создать сканер аннотаций для веб-модуля: нулевая ошибка при развертывании файла войны на Tomee? - PullRequest
0 голосов
/ 19 сентября 2019

Всякий раз, когда я добавляю зависимости Swagger в свой проект REST API и пытаюсь развернуть его на Apache Tomee, как и раньше (без этих зависимостей он работает полностью нормально), он не запускается из-за следующей ошибки:

19-Sep-2019 06:54:26.267 SEVERE [localhost-startStop-1] sun.reflect.NativeMethodAccessorImpl.invoke ContainerBase.addChild: start:
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/my-rest-api]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1823)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.tomee.catalina.TomEERuntimeException: org.apache.openejb.OpenEJBException: Unable to create annotation scanner for web module my-rest-api: null
        at org.apache.tomee.catalina.TomcatWebAppBuilder.loadApplication(TomcatWebAppBuilder.java:2299)
        at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1187)
        at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1124)
        at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:133)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5087)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 10 more
Caused by: org.apache.openejb.OpenEJBException: Unable to create annotation scanner for web module my-rest-api: null
        at org.apache.openejb.config.DeploymentLoader.addWebModule(DeploymentLoader.java:886)
        at org.apache.openejb.config.DeploymentLoader.load(DeploymentLoader.java:233)
        at org.apache.tomee.catalina.TomcatWebAppBuilder.loadApplication(TomcatWebAppBuilder.java:2297)
        ... 16 more
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)
        at org.apache.xbean.finder.AnnotationFinder.readClassDef(AnnotationFinder.java:1169)
        at org.apache.xbean.finder.AnnotationFinder.<init>(AnnotationFinder.java:147)
        at org.apache.xbean.finder.AnnotationFinder.<init>(AnnotationFinder.java:160)
        at org.apache.openejb.config.FinderFactory$OpenEJBAnnotationFinder.<init>(FinderFactory.java:546)
        at org.apache.openejb.config.FinderFactory.newFinder(FinderFactory.java:267)
        at org.apache.openejb.config.FinderFactory.create(FinderFactory.java:80)
        at org.apache.openejb.config.FinderFactory.createFinder(FinderFactory.java:69)
        at org.apache.openejb.config.DeploymentLoader.addWebModule(DeploymentLoader.java:878)
        ... 18 more

Я много гуглил по этому поводу и обнаружил, что возможная проблема может заключаться в том, что существует конфликт со сканерами, потому что у зависимости Swagger jaxrs2 есть свои собственные аннотации jaxrs2 и сканер ресурсов, а также у Tomee есть свой собственный сканер для java 8источники.К сожалению, мне не удалось найти решение, как разрешить этот конфликт, и у меня нет опыта работы со сканерами аннотаций и ресурсов в Java.

Это зависимости, которые вызывают ошибку my-rest-api.war, покаТоми пытается развернуть его:

        <!-- Swagger -->
        <dependency>
            <groupId>io.swagger.core.v3</groupId>
            <artifactId>swagger-jaxrs2</artifactId>
            <scope>compile</scope>
            <version>${swagger.jaxrs2.version}</version>
        </dependency>
        <dependency>
            <groupId>io.swagger.core.v3</groupId>
            <artifactId>swagger-jaxrs2-servlet-initializer</artifactId>
            <version>${swagger.jaxrs2.version}</version>
        </dependency>

Я ищу решение, чтобы добавить эти зависимости в проект и не заставить развертывание на Томе завершиться неудачей из-за этого.Мне нужны эти зависимости для аннотаций swagger v3 для документирования кода Rest API.

1 Ответ

0 голосов
/ 26 сентября 2019

Хорошо, я только что узнал, что эта проблема исчезла в Apache Tomee Plume 7.1.1 и 8.0.0.Поэтому обновление сервера Tomee - это решение.

...