我正在使用IBM MQ作为客户端来放置/获取消息。问题与com.ibm.mq.jar
试图创建MQMessage reqMsg= new MQMessage()
获得例外低于 java.lang.NoClassDefFoundError: Could not initialize class com.ibm.mq.internal.MQCommonServices
但com.ibm.mq.jar可我war.The相同的代码里面是工作在我的Windows机器,但不工作的时候在Linux(烟雾)服务器。这将经常发生,但是当我用新的它替换现有的mq jar它再次开始工作。但是这次没有运气。
下面的一些关键点可能有助于找出问题。
1)由于服务器运行的是相同的版本,因此我们手动将jar添加到7.1.0.6版本的工件中,因此客户端也需要具有相同版本的jar。
但是,当我做Java的罐子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。
任何帮助,非常感谢。
com.ibm.mq.allclient.jar在IBM MQ v8之前不存在,因此它不能从v7.1安装。我会检查每个jar中的MANIFEST.MF文件以检查它们来自哪个版本。在linux上,你可以使用这个命令'unzip -p com.ibm.mq.jar META-INF/MANIFEST.MF | grep Specification-Version',用每个jar替换jar名称。 – JoshMc
你想要做什么?你写过,你把jar放在你的战争中..你是从部署在应用服务器上的web应用中访问MQ的吗?如果是的话哪一个?你如何访问MQ?如果您的应用程序部署在应用程序服务器中,最好使用随附的RAR和相关JEE API,并且不要在应用程序中部署该jar文件。或者,您可能正在使用专有类连接到MQ? 。请更准确地了解你在做什么......你的问题到底是什么? – titou10
@ titou10我有一个Java客户端程序,我正尝试将消息发布到远程MQ服务器。是的,我正在从一个Web应用程序(战争)访问MQ服务器,并且我正在使用tomcat8作为应用程序服务器。就像其他依赖项一样,我在pom中添加了MQ依赖关系。我的问题是我得到CNF异常,并且如果替换com。在战争中的ibm.mq.jar并重新启动它用来工作的服务器。但是这次它不起作用。从过去的7个月开始,它一直在正常工作,并突然停止了异常工作。 – lkreddy1231