[英]NoClassDefFoundError Could not initialize class com.ibm.mq.headers.internal.HeaderType
We have upgraded to IBM MQ8 and have following dependencies in our project.我们已经升级到 IBM MQ8 并且在我们的项目中有以下依赖项。 The following dependencies exists
存在以下依赖项
com.ibm.disthub2.dhbcore
com.ibm.mq.jmqi
com.ibm.mqjms
ibm-jaxrpc-client
com.ibm.mq
com.ibm.mq.headers
com.ibm.mq.pcf
com.ibm.mq.commonservices
However while running the main program, it is giving NoDefFoundError
, despite of providing the jars in the classpath.然而,在运行主程序时,它给出了
NoDefFoundError
,尽管在类路径中提供了 jars。
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.ibm.mq.headers.internal.HeaderType
at com.ibm.mq.headers.pcf.PCFMessage.<init>(PCFMessage.java:77) ~[com.ibm.mq.headers-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.mq.headers.pcf.PCFMessage.<init>(PCFMessage.java:132) ~[com.ibm.mq.headers-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.mq.ese.service.PolicyServiceImpl.policyFromPcf(PolicyServiceImpl.java:575) ~[com.ibm.mq.jmqi-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.mq.ese.intercept.JmqiOpenInterceptorImpl.storeSecurityInfoInSmqiObject(JmqiOpenInterceptorImpl.java:359) ~[com.ibm.mq.jmqi-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.mq.ese.intercept.JmqiOpenInterceptorImpl.readPolicyIfAvailable(JmqiOpenInterceptorImpl.java:321) ~[com.ibm.mq.jmqi-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.mq.ese.intercept.JmqiOpenInterceptorImpl.afterSpiOpen(JmqiOpenInterceptorImpl.java:203) ~[com.ibm.mq.jmqi-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.spiOpen(InterceptedJmqiImpl.java:411) ~[com.ibm.mq.jmqi-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.mq.ese.jmqi.ESEJMQI.spiOpen(ESEJMQI.java:513) ~[com.ibm.mq.jmqi-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.msg.client.wmq.internal.WMQMessageProducer$SpiIdentifiedProducerShadow.initialise(WMQMessageProducer.java:762) ~[com.ibm.mqjms-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.<init>(WMQMessageProducer.java:995) ~[com.ibm.mqjms-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.msg.client.wmq.internal.WMQSession.createProducer(WMQSession.java:889) ~[com.ibm.mqjms-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.msg.client.jms.internal.JmsSessionImpl.createProducer(JmsSessionImpl.java:1232) ~[com.ibm.mqjms-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.msg.client.jms.internal.JmsQueueSessionImpl.createSender(JmsQueueSessionImpl.java:136) ~[com.ibm.mqjms-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.mq.jms.MQQueueSession.createSender(MQQueueSession.java:153) ~[com.ibm.mqjms-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at com.ibm.mq.jms.MQQueueSession.createProducer(MQQueueSession.java:254) ~[com.ibm.mqjms-7.5.0.6.jar:7.5.0.6 - p750-006-160226]
at org.springframework.jms.core.JmsTemplate.doCreateProducer(JmsTemplate.java:1114) ~[spring-jms-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.jms.core.JmsTemplate.createProducer(JmsTemplate.java:1095) ~[spring-jms-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.doSendToDestination(JmsConfiguration.java:482) ~[camel-jms-2.17.0.jar:2.17.0]
at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.access$100(JmsConfiguration.java:428) ~[camel-jms-2.17.0.jar:2.17.0]
at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate$1.doInJms(JmsConfiguration.java:442) ~[camel-jms-2.17.0.jar:2.17.0]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:484) ~[spring-jms-4.3.4.RELEASE.jar:4.3.4.RELEASE]
7.5.0.6
which would indicate that they are from a MQ v7.5.0.6 MQ client install.7.5.0.6
,这表明它们来自 MQ v7.5.0.6 MQ 客户端安装。 IBM does not support moving the jar files from the standard installation location prior to v8.0. com.ibm.mq.allclient.jar
and com.ibm.mq.traceControl.jar
from a full client or server install to other servers and locations in the same enterprise, the above files contain all of the classes that were previously in separate jar files.com.ibm.mq.allclient.jar
和com.ibm.mq.traceControl.jar
从com.ibm.mq.traceControl.jar
或服务器安装重新定位到同一企业中的其他服务器和位置,上述文件包含以前在单独的 jar 文件中的所有类。 It would be recommended to remove all the jar files with 7.5.0.6 from the name and stick with the two jar files provided by IBM with MQ v8.0.建议从名称中删除所有带有 7.5.0.6 的 jar 文件,并坚持使用 IBM 随 MQ v8.0 提供的两个 jar 文件。
Per OP @IMahajan, the following components were upgraded: Spring, Camel, Java and all related jars including JMS.根据 OP @IMahajan,升级了以下组件:Spring、Camel、Java 以及包括 JMS 在内的所有相关 jar。
Many thanks for your input.非常感谢您的意见。 I found the resolution was version of the jar.
我发现分辨率是 jar 的版本。 I provided the higher version of com.ibm.mq.headers(containing HeaderType.Class)to V8 and provided it in the class path.
我将更高版本的 com.ibm.mq.headers(包含 HeaderType.Class)提供给 V8 并在类路径中提供。 It worked.
有效。 I think mq8 is not compatible with v7.5.0.6.
我认为 mq8 与 v7.5.0.6 不兼容。 Please update if you feel different.
如果您感觉不同,请更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.