У меня возникает ошибка при запуске определенного кода Java, относящегося к JMS. Я вытягивал свои волосы в течение 2 дней, пытаясь понять это.NoClassDefFoundError javax/jms/Сообщение даже при указании пути к классам
Исключение я получаю "java.lang.NoClassDefFoundError: javax/JMS/Сообщение"
java.lang.NoClassDefFoundError: javax/jms/Message
at Asci.ActiveBatch.JMSAgent.JMSManager.createMsg(JMSManager.java:195)
at Asci.ActiveBatch.JMSAgent.JMSService.SendMessageHandler(JMSService.java:160)
Не вдаваясь в излишние подробности, это имеет в виду эту линию:
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);
}
(не спрашивайте, почему эта функция только в основном отображение на другой ... Я изначально не писать этот код)
Я звоню этот код, как
java -jar /path/myjarfile.jar
javax.jms.jar входят в манифесте, Jar (и она существует в этом месте), но только в том случае, если я также пробовал, включая путь к классам моей Lib папке (которая содержит javax.jms.jar , конечно) следующим образом:
java -classpath /path/lib:. -jar /path/myjarfile.jar
Мне до сих пор не повезло. Я не уверен, что делать или как отлаживать эту проблему. Любая помощь будет принята с благодарностью. Очевидно, что этот код компилируется, поэтому эти классы должны быть доступны (по крайней мере) во время компиляции.
Спасибо.
правок:
1) Я также попробовать Java -classpath /path/lib/javax.jms.jar :. -jar /path/myjarfile.jar
2) Эта проблема возникает во время выполнения, а не времени компиляции.
3) Итак, у меня есть другой код, который вызывает тот же метод в том же файле jar, который работает. Когда вы вызываете этот код из конкретной банки, что-то не зацепляется. Я проверил и повторно проверил мой другой код, чтобы убедиться, что он идентичен (что он/был), поэтому он не похож на проблему с кодом. Кажется, что-то есть какая-то испорченная ссылка или что-то еще.
Вы пробовали java -classpath /path/lib/javax.jms.jar :. -jar /path/myjarfile.jar? –
Я действительно не понимаю, что такое JMS, но я знаю, что «NoClassDefFound»-Exeption часто означает, что что-то было найдено во время компиляции, но не во время выполнения. – sschrass
@ToddMurray Да, я попытался четко указать банку. – bdzevel