ClassCastException: org.dom4j.DocumentFactory не может быть приведен к org.dom4j.DocumentFactory в WildFly 13

Я испытываю

java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory

во время развертывания в WildFly 13.0.0. Наконец, с приложением, которое развертывается нормально на Payara 4.1.2.181 и 5.181, для которых я указал

<class-loader delegate="false"/>

в WEB-INF/glassfish-web.xml, Я предполагаю, что исключение приведения класса вызвано проблемой загрузки класса (поскольку два равных класса, загруженные разными загрузчиками классов, считаются не идентичными), которых избегает <class-loader delegate="false"/>поэтому я предполагаю, что указание эквивалента для WildFly является решением KISS.

Есть много терминов относительно (иерархического) использования загрузчика классов на разных серверах Java EE (потому что это не указано в Java EE), и я начал читать о концепции WildFly, однако я изложу то, что я ищу, в GlassFish/Payara условия: избегайте делегирования загрузки классов и сначала берите зависимости / ищите и загружайте классы из развернутой WAR.

Раздутая тема на форумах JBoss об исключении приведения класса, которого не было в GlassFish, предоставляет решение, которое не применимо к моему приложению.

Интересно, что даже не исключая все транзитивные зависимости, обеспечивающие org.dom4j.DocumentFactory что делает приложение фактически непереносимым между серверами Java EE.

1 ответ

Мне нужно было бы проанализировать ваши пути к классам, чтобы быть уверенным, но я получал аналогичную ошибку при развертывании приложения, которое включало другую версию hibernate, чем та, которая включена в wildfly. Если вы используете Hibernate, то это хороший момент, чтобы начать расследование. если нет, то проверьте, не конфликтуют ли некоторые другие (транзитивные) зависимости с тем, что включено в wildfly.

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