在尝试从MQMessage对象中使用MQHeaderIterator提取MQHeaders时出现以下错误。我正在使用下面的代码行并获取下面的异常。在classpath下面还添加了jar,但仍然显示错误。使用IBM MQ Java错误:: java.lang.ClassNotFoundException:com.ibm.mq.internal.MQCommonServices
库:
com.ibm.mq.jar
com.ibm.mq.headers.jar
com.ibm.mq.commonservices.jar
com.ibm.mq.jmqi.jar
com.ibm.mq.pcf.jar
代码:
//Giving error in this line
MQHeaderIterator it = new MQHeaderIterator(theMessage);
其投掷如下例外。
Exception in thread "main" java.lang.NoClassDefFoundError: com/ibm/mq/internal/MQCommonServices
at com.ibm.mq.headers.MQHeaderIterator.<init>(MQHeaderIterator.java:112)
at com.test.mq.util.MQClass.main(MQClass.java:69)
Caused by: java.lang.ClassNotFoundException: com.ibm.mq.internal.MQCommonServices
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
请大家建议此错误的可能原因主要是当某些jar文件丢失时发生错误。我在这里错过了什么吗?
你明白堆栈跟踪? –
我建议您将类路径指向包含所有必需jar文件的原始IBM MQ安装位置的'java/lib'目录,IBM不支持将jar文件复制到不同位置,直到v8在这种情况下它们已添加支持用于重定位但将所需的所有内容合并到两个jar文件com.ibm.mq.allclient.jar和com.ibm.mq.traceControl.jar中,该文件可以从完整的MQ Server或MQ Client安装到另一个位置在你的企业中。 – JoshMc
正如所建议的那样,我将原始IBM MQ安装位置的完整MQ Java/lib的类路径添加到我的程序中,现在它的工作正常。非常感谢您的建议。请添加此解决方案作为评论的答案对他人有帮助。非常感谢:) –