2013-07-07 24 views
19

Tôi đã cài đặt Jetty 7 và cấu hình nó correcty cho IdP Shibboleth theo hướng dẫn này: https://wiki.shibboleth.net/confluence/display/SHIB2/IdPJetty7PrepareNoClassDefFoundError: org/w3c/dom/ElementTraversal

Nhưng khi tôi cố gắng để bắt đầu Jetty tôi nhận được lỗi này:

NoClassDefFoundError: org/w3c/dom/ElementTraversal 

Để giải quyết vấn đề này, tôi cần cài đặt phụ thuộc ElementTraversal và bao gồm nó trên đường dẫn lớp học của tôi.
Nhưng làm cách nào tôi có thể thực hiện việc này? Tôi có cần tải xuống Lớp này [ElementTraversal.class] hoặc một tệp .jar không? và nơi tôi có thể đặt nó? trong số JETTY_HOME? Tôi có cần xuất CLASSPATH không?

Ai đó có thể giúp tôi không?
Cảm ơn bạn rất nhiều!

Trả lời

19

Có vẻ như ElementTraversal là một phần của xml-apis-2.10.0.jar nên được cung cấp với bản cài đặt Shibboleth của bạn.

Vì vậy, nếu bạn đang theo đuổi these instructions bạn cũng nên đã theo bước này:

Endorse Xerces and Xalan by creating the directory JETTY_HOME/lib/endorsed/ and copy the .jar files included in the IdP source endorsed/ directory into the newly created directory.

Vì vậy, miễn là bạn đã sao chép tất cả các file jar một cách thích hợp, nó sẽ không sao. Tôi đoán là bạn đã bỏ lỡ bước đó - hoặc có lẽ chỉ cần chỉ sao chép các tệp jar bằng Xalan hoặc Xerces trong tên và bỏ qua hai tệp còn lại.

+0

Cảm ơn bạn rất nhiều, nhưng tôi cũng đã làm theo bước đó. Tôi đã sao chép chính xác 'xalan-2.7.1.jar' và' xercesImpl-2.10.0.jar' thành JETTY_HOME/lib/endorsed/và tôi đã thêm dòng sau vào start.ini: '-Djava.endorsed.dirs = lib/xác nhận' Tôi đã làm theo tất cả các bước. –

+0

Tôi có 'xml-apis-2.10.0.jar' trong' opt/shibboleth-idp/lib/endorsed/xml-apis-2.10.0.jar' .. Tôi nghĩ rằng vấn đề có thể nằm trong đường dẫn đã định nghĩa trong start.ini. Tôi có thể cố gắng sử dụng một đường dẫn tuyệt đối '-Djava.endorsed.dirs =/home/người dùng/webapps/jetty/lib/endorsed' –

+0

Không hoạt động với đường dẫn tuyệt đối. Cảm ơn bạn Jon Skeet, nó đã mang lại cho tôi niềm vui và vinh dự lớn để nhận được một phản ứng từ bạn cho câu hỏi của tôi. –

17

Trong trường hợp của tôi, sự cố đã được khắc phục bằng cách thay đổi phiên bản xml-apis từ 1.3.04 thành 1.4.01.

BTW, phiên bản 2.10.0 không tồn tại ở Trung tâm Maven (Tôi tò mò ở đâu Jon Skeet tìm thấy nó).

+2

A bổ sung câu trả lời hữu ích này từ tháng 12 năm 2016, trong maven cũng có phiên bản xml-apis 2.0.0 và 2.0.2, nhưng chúng không phải là lọ mới, chúng chỉ là một pom, nói di chuyển đến 1.0.b2.Tôi không biết đội nào đứng đằng sau điều này, nhưng nếu họ không muốn mở mã của họ, họ không phải đặt nó vào maven, điều này là dễ hiểu. Nhưng họ đặt nó ở đó, và di chuyển nó đến một phiên bản thấp hơn, đó là một sự lãng phí của nhiều nhà phát triển thời gian (tôi thấy hơn 100 tập quán của phiên bản 2.0), và điều này là không thể chấp nhận được. – Tiina

+1

@Tiina đây là trường hợp của tôi ... một sự xấu hổ mà tôi không thể tìm thấy bình luận này đầu tiên. Tuy nhiên, bạn có thể hoàn thành điều này và cho chúng tôi biết làm thế nào để có được phiên bản chính xác bằng cách sử dụng maven? – ConquerorsHaki

+0

@ConquerorsHaki Tôi thường tìm phiên bản đúng bằng cách sử dụng stackoverflow. Và cố gắng sử dụng phiên bản có cả phiên bản cao hơn và số lượng tập quán có thể chấp nhận được. Trong khi tôi sử dụng xml-apis 2.0 nhưng không có vấn đề được giải quyết, tôi nhìn vào pom của nó, và tôi thấy rằng "di chuyển đến một" thấp hơn "oops. Thông thường mọi người sẽ nghĩ về vấn đề Internet của họ trước khi họ không thấy sự khác biệt sau khi họ cập nhật pom của họ. Đó cũng là mối quan tâm đầu tiên của tôi. – Tiina

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