当前位置: 首页 > 面试题库 >

IBM MQ Java错误:: java.lang.ClassNotFoundException:com.ibm.mq.internal.MQCommonServices

沈凡
2023-03-14
问题内容

尝试从MQMessage对象使用MQHeaderIterator提取MQHeaders时,出现以下错误。我正在使用下面的代码行,并获得以下异常。在类路径中的jar下面也添加了它,但仍然显示错误。

使用的库:

com.ibm.mq.jar
com.ibm.mq.headers.jar
com.ibm.mq.commonservices.jar
com.ibm.mq.jmqi.jar
com.ibm.mq.pcf.jar

码:

//Giving error in this line
MQHeaderIterator it = new MQHeaderIterator(theMessage);

其引发的异常如下。

Exception in thread "main" java.lang.NoClassDefFoundError: com/ibm/mq/internal/MQCommonServices
    at com.ibm.mq.headers.MQHeaderIterator.<init>(MQHeaderIterator.java:112)
    at com.test.mq.util.MQClass.main(MQClass.java:69)
Caused by: java.lang.ClassNotFoundException: com.ibm.mq.internal.MQCommonServices
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 2 more

请提出此错误的可能原因,主要是缺少某些jar文件时发生ClassNot Found错误。我在这里想念什么吗?


问题答案:

简短的答案,将类路径指向原始IBM MQ安装位置的java / lib目录,该位置包含 所有 必需的jar文件。

更多详情:

在v8之前,IBM不支持将jar文件复制到其他位置,在这种情况下,它们已添加了对重定位的支持,但已将所需的所有内容组合到两个jar文件com.ibm.mq.allclient.jar和com.ibm.mq.traceControl.jar中,可以从完整的MQ
Server或MQ Client安装位置迁移到企业中的其他位置。

有关更多详细信息,请参阅IBM的技术说明“ 从MQ
8.0开始,可以使用可重定位JAR文件

”一节。

WebSphere MQ 8.0.0> IBM MQ>开发应用程序>使用IBM MQ开发面向对象的应用程序>使用Java的IBM MQ类>
Java的IBM MQ类的安装和配置> Java的IBM MQ类的
安装内容

可重定位的JAR文件

在企业内部,可以将以下文件移动到需要为Java应用程序运行IBM MQ类的系统:

  • com.ibm.mq.allclient.jar
  • com.ibm.mq.traceControl.jar

com.ibm.mq.allclient.jar文件包含JMS的IBM MQ类,Java的IBM
MQ类以及PCF和Headers类。如果将此文件移动到新位置,请确保采取步骤以使用新的IBM MQ Fix
Pack维护此新位置。另外,如果您要获得临时修订,请确保IBM支持已知此文件的使用。

要确定文件com.ibm.mq.allclient.jar的版本,请使用以下命令:java -jar com.ibm.mq.allclient.jar

请注意,所有MQ版本7.1和更早版本都是IBM的服务终止。IBM MQ v7.5的服务终止日期为2018年4月30日。

我建议您转到尚未宣布终止服务日期的v8.0或v9.0。较新的MQ客户端版本可以连接到较旧的MQ队列管理器。您可以在以下链接中下载仅Java安装的MQ
8.0或MQ 9.0 jar文件:

  • IBM MQ v8.0客户端
  • IBM MQ v9.0客户端


 类似资料:
  • 我正在尝试搜索亚马逊的产品广告,并使用botlenose来帮助我做到这一点。但是,我刚刚收到HTTP错误400。 其他一些重要信息: 我来自巴西,我的标签也来自亚马逊。这是个问题吗? 我确实检查了我的钥匙、秘密和标签,一切正常。我确实在StackOverflow上查看了其他一些问题,但对我来说没有任何效果。 当然,出于安全原因,我更改了密钥。 Traceback(最近一次调用最后一次):File"

  • 我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:

  • 目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示:

  • 我得到了这个错误,有什么想法会导致它吗?我试图发送一个DTO,它有一个扩展抽象类的对象列表,我想这个问题可能是因为DTO中的列表,还是因为抽象类的子类?

  • 在月食中, ”org.apache.axis2。AxisFault:传输错误: 403错误:禁止”试图从svn检出项目时发生错误。我不能实现这个错误,因此我检查了从终端使用"svn-co"命令的项目。 但是,有趣的是,当我试图在Eclipse中运行应用程序时,在输入凭据(用户名和密码)并按下“登录”按钮之后,我又遇到了相同的错误。响应是JFrame上的无效用户名/密码,但凭据没有错误。这只发生在日

  • Errors 错误 Library routines must often return some sort of error indication to the caller. As mentioned earlier, Go’s multivalue return makes it easy to return a detailed error description alongside th

  • 本章概述了Google API错误模型,以及开发人员如何正确生成和处理错误的一般指南。 Google API使用简单的协议无关错误模型,这使我们能够在不同的API,API协议(如gRPC或HTTP)以及错误上下文(例如,异步,批处理或工作流错误)中获得一致的体验。 错误模型 错误模型在逻辑上由google.rpc.Status定义,当API发生错误时,返回一个Status实例给客户端。 以下代码段

  • 5.4. 错误 在Go中有一部分函数总是能成功的运行。比如strings.Contains和strconv.FormatBool函数,对各种可能的输入都做了良好的处理,使得运行时几乎不会失败,除非遇到灾难性的、不可预料的情况,比如运行时的内存溢出。导致这种错误的原因很复杂,难以处理,从错误中恢复的可能性也很低。 还有一部分函数只要输入的参数满足一定条件,也能保证运行成功。比如time.Date函数