我正在使用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