На самом деле вы не должны писать ключ AppCompatFlags. Ваше приложение должно обнаружить, что оно не повышено, а затем уведомлять пользователя или пытаться перезагрузить себя.
Если это 64-битная система, тогда будут два ключа AppCompatFlags (другой в Software \ Wow6432Node ), и вы можете использовать инструкцию SetRegView
NSIS, чтобы выбрать, к какому ключу вы хотите записать.
Как вы можете видеть из трассировки стека, проблема в том, что на Tomcat вы получаете
java.lang.ClassNotFoundException: javax.enterprise.inject.spi.BeanManager
blockquote >Тот факт, что он работает на 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 и т. д.
Приложения, работающие на 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.
Привет. Как я вижу, у вас проблемы с вашим jar byte-buddy-1.9.3.jar. Попробуйте удалить его из вашего пути сборки и просто войдите в рабочее пространство eclipse и вставьте вручную в папку lib вашего проекта и после Это обновит ваш проект. Надеюсь, это исправит вашу проблему.