简体   繁体   English

NoClassDefFoundError 无法初始化类 com.ibm.mq.headers.internal.HeaderType

[英]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]
  1. Did you upgrade the MQ server to v8 or the MQ client to v8 or both?您是将 MQ 服务器升级到 v8 还是将 MQ 客户端升级到 v8 或两者兼而有之?
  2. Do they run on the same machine?它们运行在同一台机器上吗?
  3. The stack trace shows all of the jar files have been renamed to include the string 7.5.0.6 which would indicate that they are from a MQ v7.5.0.6 MQ client install.堆栈跟踪显示所有 jar 文件都已重命名以包含字符串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. IBM 不支持从 v8.0 之前的标准安装位置移动 jar 文件。
  4. At MQ v8.0 and later IBM provides a java only install that can be located anywhere.在 MQ v8.0 和更高版本中,IBM 提供了一个只能安装在任何地方的 Java 安装。
  5. At MQ v8.0 and later IBM also allows relocation of the files 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.在 MQ v8.0 和更高版本中,IBM 还允许将文件com.ibm.mq.allclient.jarcom.ibm.mq.traceControl.jarcom.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.

相关问题 具有EasyMock的Maven surefire Java 8产生:java.lang.NoClassDefFoundError:无法初始化类com.sun.proxy。$ Proxy33 - Maven surefire java 8 with EasyMock yields: java.lang.NoClassDefFoundError: Could not initialize class com.sun.proxy.$Proxy33 java.lang.NoClassDefFoundError:无法初始化类sun.text.normalizer.NormalizerImpl - java.lang.NoClassDefFoundError: Could not initialize class sun.text.normalizer.NormalizerImpl java.lang.NoClassDefFoundError:无法初始化类org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil $ ClassLoaderHolder - java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil$ClassLoaderHolder 错误:无法找到或加载主类 com.sun.tools.internal.xjc.XJCFacade - Error: Could not find or load main class com.sun.tools.internal.xjc.XJCFacade 如何验证池的IBM MQ连接 - How to validate IBM MQ connection for Pool 两个简单的 IBM MQ 客户端测试写入 MQ 队列 - 为什么一个有效,而另一个无效? - Two simple IBM MQ client tests write to MQ queue - why does one work, but, NOT the other? 在 Eclipse 中导入 Gradle 项目时无法初始化类 java.net.DualStackPlainDatagramSocketImpl - Could not initialize class java.net.DualStackPlainDatagramSocketImpl when importing Gradle project in Eclipse JPA LazyInitialisationException - 无法初始化代理 - JPA LazyInitialisationException - Could Not Initialize Proxy JBoss Fuse/REST DSL - 为什么我的修改(使用 IBM MQ)不起作用? - JBoss Fuse/REST DSL - Why do my modifications (to use IBM MQ) not work? 使用 mssql 数据库将 spring 引导部署到 glassfish 5.1 时,无法初始化 class sun.security.ssl.SSLExtension - Could not initialize class sun.security.ssl.SSLExtension when deploying spring boot with mssql database to glassfish 5.1
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM