Приложение работает на wildfly, но не на tomcat

На самом деле вы не должны писать ключ AppCompatFlags. Ваше приложение должно обнаружить, что оно не повышено, а затем уведомлять пользователя или пытаться перезагрузить себя.

Если это 64-битная система, тогда будут два ключа AppCompatFlags (другой в Software \ Wow6432Node ), и вы можете использовать инструкцию SetRegView NSIS, чтобы выбрать, к какому ключу вы хотите записать.

0
задан shiva 5 March 2019 в 04:00
поделиться

3 ответа

Как вы можете видеть из трассировки стека, проблема в том, что на Tomcat вы получаете

java.lang.ClassNotFoundException: javax.enterprise.inject.spi.BeanManager

Тот факт, что он работает на Wildfly, но не на Tomcat, объясняется тем, что Wildfly является сервером приложений, уже содержащим множество библиотек (в зависимости от используемой версии). Java EE Full & amp; Распространение через Интернет в версии 16.0.0. Наконец, например. содержит библиотеку cdi-api-2.0.SP1.jar (под wildfly-16.0.0.Final \ modules \ system \ слои \ base \ javax \ enterprise \ api \ main), которая содержит класс BeanManager. Поэтому класс найден и работает.

Tomcat - это веб-сервер, который по умолчанию не содержит библиотек EE. Поэтому при развертывании в Tomcat необходимо убедиться, что библиотека, содержащая класс javax.enterprise.inject.spi.BeanManager, находится на пути к классам при развертывании в tomcat.

Библиотека, которая содержит этот класс, является https://mvnrepository.com/artifact/javax.enterprise/cdi-api/2.0.SP1 , и в зависимости от того, какой тип проекта вы используете, вы можете добавить зависимость maven / gradle, например

<dependency>
    <groupId>javax.enterprise</groupId>
    <artifactId>cdi-api</artifactId>
    <version>2.0.SP1</version>
</dependency>

(при использовании maven) или загрузите jar-файл и поместите его в свои самоуправляемые библиотеки, если не используете инструмент управления сборкой, такой как maven и т. д.

0
ответ дан codinghaus 5 March 2019 в 04:00
поделиться

Приложения, работающие на WildFly, Payara, TomEE, WebSphere, GlassFish и т. Д., Обычно не переносимы на Tomcat. Все эти серверы обеспечивают реализацию API спецификации Java (™) EE 7 . Более новые версии этих серверов реализуют API спецификации Java (TM) EE 8 , которые включают API Servlet 4.0.

Tomcat 8.5 реализует только API Servlet 3.1 - Apache Tomcat 8.5.38 . Если вы посмотрите на это и сравните с любым из вышеперечисленных, вы поймете, чего не хватает Tomcat.

Я считаю, что TomEE, GlassFish и Payara содержат правильно интегрированные компоненты Tomcat.

0
ответ дан Steve C 5 March 2019 в 04:00
поделиться

Привет. Как я вижу, у вас проблемы с вашим jar byte-buddy-1.9.3.jar. Попробуйте удалить его из вашего пути сборки и просто войдите в рабочее пространство eclipse и вставьте вручную в папку lib вашего проекта и после Это обновит ваш проект. Надеюсь, это исправит вашу проблему.

0
ответ дан Rajesh Bhardwaj 5 March 2019 в 04:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: