我使用IBM MQ作为客户端来发送/获取消息。
尝试创建 MQMessage reqMsg= new MQMessage()
以获得异常时
的 java.lang.NoClassDefFoundError: Could not initialize class com.ibm.mq.internal.MQCommonServices
但是 com.ibm.mq.jar 在我的战争中可用。相同的代码在我的Windows机器上工作但不在linux(烟雾)服务器中工作。这将经常发生但是当我将现有的mq jar替换为用于重新开始工作的新jar。但这次没有运气。
以下一些关键点可能有助于找出问题。
1)我们手动将jar文件上传到版本为7.1.0.6的工件,因为服务器运行的版本相同,因此客户端也需要具有相同版本的jar。
但是当我做 java -jar com.ibm.mq.jar 时,它显示如下
Name: WebSphere MQ classes for Java
Version: 8.0.0.5
Level: p800-005-160516.2
Build Type: Production
2)我在战争中使用版本7.1.0.6以下的罐子来从/向服务器发送/获取消息。
com.ibm.mq.allclient
com.ibm.mq.axis2
com.ibm.mq.commonservices
com.ibm.mq.headers
com.ibm.mq
com.ibm.mq.jmqi
com.ibm.mq.jms.Nojndi
com.ibm.mq.pcf
com.ibm.mq.soap
com.ibm.mq.tools.ras
com.ibm.mq.traceControl
com.ibm.mqjms
3)我使用的是jdk 1.8。
非常感谢任何帮助。
答案 0 :(得分:0)
com.ibm.mq.allclient.jar
不存在,因此无法从v7.1.0.6安装。
检查每个jar中的MANIFEST.MF文件,以检查它的IBM MQ版本。
在linux上,您可以使用以下命令,将jar名称替换为每个jar。
unzip -p com.ibm.mq.jar META-INF/MANIFEST.MF|grep Implementation-Version
您收到的错误可能是由于jar版本之间的不匹配。验证所有jar文件均来自IBM MQ的SAME版本。