2009-04-28 33 views
5

tôi tiếp tục nhận được ngoại lệ sau đây trên một trong các máy chủ trực tiếp của chúng tôi (những người khác chạy cùng mã vẻ ok):vấn đề Classpath sử dụng 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) 

Tôi khá chắc chắn rằng tôi có lọ Xalan và Saxon trong classpath (sử dụng IBM Java 1.5).

Bạn có bất kỳ Ý tưởng nào khác có thể sai không?

Edit:

Đó là đoạn code mà gây ra các vấn đề:

  XPathFactory factory = XPathFactory.newInstance(); 

Và nó đang chạy trên một máy chủ web tùy chỉnh đó là xấp xỉ dựa trên các công cụ catalina.

+0

Bạn có thể viết mã gây ra lỗi không? – Azder

+0

Bạn đang sử dụng loại môi trường nào? Tomcat? Phiên bản nào? – Ichorus

+5

tôi biết điều này không thêm gì vào cuộc thảo luận, nhưng javadoc của phương pháp newInstance nói rõ ràng "phương pháp này sẽ không bao giờ thất bại" ... heh! (http://xml.apache.org/xalan-j/apidocs/javax/xml/xpath/XPathFactory.html#newInstance()) – jambriz

Trả lời

3

Tìm thấy câu trả lời bản thân mình: Vấn đề là sự kết hợp của việc sử dụng Java 5 và có một tùy chọn

-Djava.endorsed.dirs 

bộ vào một thư mục có chứa các xalan.jar.

Khi mọi thứ đã bị xóa hoạt động trở lại.

2

Đảm bảo bạn có các lọ xml-apis.jar và xerces thích hợp trong đường dẫn lớp của bạn cho phiên bản xalan mà bạn đang sử dụng (kiểm tra ghi chú phát hành cho chính xác, bạn cần). Cũng đảm bảo bạn không có bội số vì xercesImpl.jar, xml-apis.jar và xalan.jar cần được đồng bộ hóa.

4

Bạn cần thêm .jar thích hợp trong đường dẫn lớp của bạn. Trong trường hợp của tôi, tôi đã sử dụng thư viện Saxon-HE.

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

Lỗi đã được sửa trong phiên bản 9.5.1.5. Vì vậy, bạn có thể tải xuống latest Saxon 9 HE.

+1

Bạn không nhất thiết phải cập nhật từ Saxon 9.1 B .. lớp vi phạm là không phải cư dân trong lọ chính, nhưng trong saxon-xpath.jar phụ Nếu dự án của bạn không sử dụng các biểu thức XPath từ Java, chỉ cần bỏ qua jar này khỏi đường dẫn lớp của tôi - tất cả chức năng chuyển đổi XSLT dường như vẫn hoạt động tốt – Black

+0

chính xác điều tương tự. Nâng cấp lên saxon> 9.5.1.4 đã hoạt động! Cám ơn vì đã chia sẻ! – mrBrown

+0

@Francis Điểm của bạn về việc xóa saxon-xpath.jar đã làm việc cho tôi. Cảm ơn – user7

Các vấn đề liên quan