2009-04-28 2 views
5

я получаю следующее исключение на одном из наших живых серверов (другие работает тот же код кажется нормально):Classpath вопрос с помощью XPathFactory

java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/domwith the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: No XPathFctory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom 
at javax.xml.xpath.XPathFactory.newInstance(XPathFactory.java:67) 

Я уверен, что у меня есть банки Xalan и Saxon в пути к классам (с использованием IBM Java 1.5).

У вас есть идеи, что еще может быть неправильным?

Edit:

Это код, который вызывает проблемы:

  XPathFactory factory = XPathFactory.newInstance(); 

И он работает на веб-сервере пользовательского, который примерно на основе Catalina двигателя.

+0

Можете ли вы написать код, вызвавший ошибку? – Azder

+0

В какой среде вы работаете? Кот? Какая версия? – Ichorus

+5

Я знаю, что это ничего не добавляет к обсуждению, но javadoc метода newInstance явно говорит: «Этот метод никогда не потерпит неудачу» ... heh! (http://xml.apache.org/xalan-j/apidocs/javax/xml/xpath/XPathFactory.html#newInstance()) – jambriz

ответ

3

нашел ответ сам: Проблема заключается в сочетании с использованием Java 5 и имеющий возможность

-Djava.endorsed.dirs 

набор в каталог, который содержал xalan.jar.

После удаления все работает снова.

2

Убедитесь, что у вас есть подходящие jml-apis.jar и xerces jars в вашем пути к классам для версии xalan, которую вы используете (отметьте заметки о выпуске, для чего именно это необходимо). Также убедитесь, что у вас нет кратных, поскольку xercesImpl.jar, xml-apis.jar и xalan.jar должны быть синхронизированы.

4

Вам нужно добавить соответствующий .jar в свой путь к классам. В моем случае я использовал саксонскую библиотеку.

There exists a bug in Saxon9 you maybe run into like me.

Данная ошибка была исправлена ​​в версии 9.5.1.5. Таким образом, вы можете скачать latest Saxon 9 HE.

+1

Вам необязательно обновлять с Saxon 9.1 B .. класс нарушения не резидент в главном банке, но в вспомогательном saxon-xpath.jar Если ваш проект не использует выражения XPath из Java, просто опустите эту банку из моего пути к классу - все функции XSLT-преобразования, похоже, все еще работают нормально – Black

+0

Ran in то же самое. Обновлено саксон> 9.5.1.4! Спасибо, что поделился! – mrBrown

+0

@Francis Ваша задача удалить saxon-xpath.jar для меня. благодаря – user7