运行与 JMS 有关的某些 java 代码时遇到错误。我已经拉了2天的头发试图解决这个问题。
我得到的异常是“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)
无需赘述,这里指的是这一行:
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 文件中调用相同的方法。从特定 jar 调用此代码时,有些东西不正确。我已经检查并重新检查了我的其他代码以确保它是相同的(它曾经是/现在),所以它看起来不像是代码问题。某处似乎有一些混乱的参考或其他东西。