Исключение класса: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl - PullRequest
5 голосов
/ 25 ноября 2010

У меня проблема с jboss.Когда я пытаюсь развернуть мой .war на сервере, я получаю следующую ошибку:

java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserF actoryImpl cannot be cast to javax.xml.parsers.SAXParserFactory

, из которой совершенно очевидно, что происходит конфликт библиотек.Итак, я удалил файл jar, содержащий xerces, что произошло с помощью jaxp-ri-1.4.1.jar.Теперь, когда я пытаюсь выполнить повторное развертывание, я получаю эту новую ошибку

java.lang.NullPointerException
    at org.apache.commons.digester.Digester.getXMLReader(Digester.java:944)
    at org.apache.commons.digester.Digester.parse(Digester.java:1765)
    at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java

, где он жалуется, что не может найти парсеры xml.

Итак, теперь мои вопросы: кто-нибудь знает, что может быть решением?Любой jar-файл jaxp, который не содержит пакет xerces?

Обновление

Я сделал, как предлагалось здесь , и теперь у меня новая ошибка,

java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl

, который является классом из одного из удаленных мной jar-файлов, который содержит SaxParserFactory: (

Ответы [ 2 ]

2 голосов
/ 02 августа 2011

Полагаю ... Вы используете JBoss 5.1. Если так, то это проблема парсера XML и проблема с загрузкой классов. Вы должны определить jboss-classloading.xml

См. http://www.coderanch.com/t/523519/JBoss/Cast и http://www.mastertheboss.com/jboss-application-ser...oss-5-classloading-issues.html

2 голосов
/ 25 ноября 2010

Похоже, что вы удалили неправильный JAR.Исходное исключение ClassCastException было сообщено, когда экземпляр SAXParserFactoryImpl (который является подтипом SAXParserFactory) приводится к SAXParserFactory.

Исключение, скорее всего, связано с тем, что существует два экземпляра SAXParserFactory, а недва экземпляра SAXParserFactoryImpl загружаются в JVM.Во время приведения был возвращен SAXParserFactory, загруженный другим загрузчиком классов, что привело к исключению.Поэтому исправление заключается в том, чтобы идентифицировать JAR-файлы в вашем classpath, которые имеют конфликтующие версии SAXParserFactory.Удаление самой реализации синтаксического анализатора может быть нецелесообразным, если Commons Digester ищет конкретную реализацию.

...