Tôi gặp phải lỗi khi chạy một số mã java nhất định liên quan đến JMS. Tôi đã kéo tóc của tôi ra trong 2 ngày cố gắng tìm ra điều này.NoClassDefFoundError javax/jms/Thông báo ngay cả khi chỉ định đường dẫn lớp
Ngoại lệ tôi nhận được là "java.lang.NoClassDefFoundError: javax/jms/Message"
java.lang.NoClassDefFoundError: javax/jms/Message
at Asci.ActiveBatch.JMSAgent.JMSManager.createMsg(JMSManager.java:195)
at Asci.ActiveBatch.JMSAgent.JMSService.SendMessageHandler(JMSService.java:160)
Mà không đi sâu vào chi tiết quá nhiều, điều này được đề cập đến dòng này:
public static void createMsg(String icf, String url, String cf, String QName, String msgText, String[] props, String user, String pass) throws Exception {
JMSProducer.produceMsg(icf, url, cf, QName, msgText, props, user, pass);
}
(Đừng hỏi tại sao chức năng đó chỉ là bản đồ cơ bản với một chức năng khác ... Tôi không viết mã này ban đầu)
Tôi gọi mã này là
java -jar /path/myjarfile.jar
javax.jms.jar được bao gồm trong tệp kê khai của jar đó (và nó tồn tại ở vị trí đó), nhưng trong trường hợp tôi cũng đã thử bao gồm cả classpath vào thư mục lib của tôi (chứa javax.jms.jar , tất nhiên) như sau:
java -classpath /path/lib:. -jar /path/myjarfile.jar
Tôi đã không có may mắn cho đến nay. Tôi không chắc chắn phải làm gì hoặc làm thế nào để gỡ lỗi vấn đề này. Mọi sự trợ giúp sẽ rất được trân trọng. Rõ ràng, mã này biên dịch, vì vậy các lớp này phải có sẵn (ít nhất) trong thời gian biên dịch.
Cảm ơn.
CHỈNH SỬA:
1) Tôi cũng đã thử java -classpath /path/lib/javax.jms.jar :. -jar /path/myjarfile.jar
2) Sự cố này xảy ra trong thời gian chạy, không biên dịch.
3) Vì vậy, tôi có mã khác gọi cùng một phương thức trong cùng một tệp jar hoạt động. Có cái gì đó không chia lưới ngay khi gọi mã này từ một cái bình cụ thể. Tôi đã kiểm tra và kiểm tra lại mã khác của mình để chắc chắn rằng nó giống hệt nhau (mà nó là/là), do đó, nó không có vẻ giống như một vấn đề mã. Dường như có một số tham chiếu sai lầm hay gì đó, ở đâu đó.
Bạn đã thử java -classpath /path/lib/javax.jms.jar :. -jar /path/myjarfile.jar? –
Tôi không thực sự hiểu những gì JMS, nhưng tôi biết rằng một 'NoClassDefFound'-Exeption thường có nghĩa là, rằng một cái gì đó đã được tìm thấy tại thời gian biên dịch, nhưng không phải lúc chạy. – sschrass
@ToddMurray Có, tôi đã thử xác định rõ ràng bình. – bdzevel