2009-04-28 14 views
5

wciąż otrzymuję następujący wyjątek na jednym z naszych serwerów żywych (inne uruchomione tego samego kodu wydają ok):Classpath problem używając 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) 

jestem całkiem pewny, że mam słoiki XALAN i Saxon w ścieżce klas (używając IBM Java 1.5).

Czy masz jakieś pomysły, co jeszcze może być nie tak?

Edit:

To kod, który powoduje problem:

  XPathFactory factory = XPathFactory.newInstance(); 

I to działa na niestandardowym serwer WWW, który jest w przybliżeniu opartej na silniku Catalina.

+0

Czy możesz napisać kod, który spowodował błąd? – Azder

+0

Z jakiego środowiska korzystasz? Kocur? Jaka wersja? – Ichorus

+5

Wiem, że to nic nie dodaje do dyskusji, ale javadoc metody newInstance wyraźnie mówi "ta metoda nigdy nie zawiedzie" ... heh! (http://xml.apache.org/xalan-j/apidocs/javax/xml/xpath/XPathFactory.html#newInstance()) – jambriz

Odpowiedz

3

znaleźć odpowiedź sobie: Problemem jest połączenie przy użyciu języka Java 5 i posiadający opcję

-Djava.endorsed.dirs 

ustawiony na katalogu, który zawierał xalan.jar.

Po usunięciu wszystko działa ponownie.

2

Upewnij się, że masz odpowiednie słoiki xml-apis.jar i xerces w ścieżce klas dla wersji xalan, której używasz (sprawdź informacje o wersji, czego dokładnie potrzebujesz). Upewnij się również, że nie masz wielokrotności, ponieważ pliki xercesImpl.jar, xml-apis.jar i xalan.jar muszą być zsynchronizowane.

4

Musisz dodać odpowiednią .jar do swojej ścieżki klas. W moim przypadku użyłem biblioteki Saxon-HE.

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

Błąd został poprawiony w wersji 9.5.1.5. Więc możesz pobrać latest Saxon 9 HE.

+1

Nie musisz koniecznie aktualizować z Saxon 9.1 B .. klasa przestępcza jest nie rezyduj w głównym słoju, ale w pomocniczym saksonie-xpath.jar Jeśli twój projekt nie wykorzystuje wyrażeń XPath z Javy, po prostu pomiń ten słoik ze ścieżki mojej klasy - wszystkie funkcje transformacji XSLT nadal działają dobrze – Black

+0

dokładnie to samo. Rozpoczęła się aktualizacja do wersji saxon> 9.5.1.4! Dzięki za udostępnienie! – mrBrown

+0

@Francis Twój punkt usuwania saxon-xpath.jar pracował dla mnie. Dzięki – user7