【问题标题】:Exception in thread "main" java.lang.NoClassDefFoundError: com/ibm/mq/MQException线程“主”java.lang.NoClassDefFoundError 中的异常:com/ibm/mq/MQException
【发布时间】:2012-12-14 22:57:47
【问题描述】:

当我如下运行我的程序时,我遇到了异常,

java -jar MQprogram.jar

我已经正确设置了引用所有必需 jars 的类路径, “com.ibm.mq.jmqi.jar”也在类路径中被引用,它有 MQException。

`线程“主”java.lang.NoClassDefFoundError 中的异常:com/ibm/mq/MQException 引起:java.lang.ClassNotFoundException:com.ibm.mq.MQException 在 java.net.URLClassLoader$1.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(未知来源) 在 java.lang.ClassLoader.loadClass(未知来源) 在 sun.misc.Launcher$AppClassLoader.loadClass(未知来源) 在 java.lang.ClassLoader.loadClass(未知来源) 在 java.lang.ClassLoader.loadClassInternal(未知来源) 找不到主类:com.test.bo.MQprogram。程序将会退出。 `

我仍然不清楚错误在哪里。

【问题讨论】:

    标签: java ibm-mq


    【解决方案1】:

    这几乎总是由不完整的客户端安装和/或 CLASSPATH 问题共同引起的。许多人获取 jar 文件而不是执行完整的安装,并且不一定获得所有这些文件。有时他们只是继续查找 jar 文件并抓取它们,而不考虑不同的版本。 IBM 从 V7.0 开始对 Java/JMS 类进行了一次重大重构,并从那时起也进行了一些更新。从 V7.0.1 开始,WMQ 可以安装到任意目录路径并在服务器上进行多次安装。这意味着现在可以有多个 JRE/s、多个客户端安装等。这并没有对 CLASSPATH 产生太大影响,但确实改变了依赖关系,例如 NLS 支持、跟踪以及 Java 类所依赖/与之交互的其他事物。

    建议安装完整的 WMQ 客户端并将 CLASSPATH 指向安装目录。如果这是不可能的,那么在 somewhere 安装一个完整的客户端并从已知良好的安装中获取完整的 jar 集。那么至少你知道你有所有相同的版本,等等。

    如果您决定从 IBM 的分发媒体安装完整的客户端,您将获得一些额外的功能,例如诊断和低级跟踪。它还确保可以应用维护。例如,您有一个在 Fix Pack 中得到纠正的问题,您只需在现有客户端安装之上安装 Fix Pack。如果您只有 jar 文件,则无法安装 Fix Pack。

    WMQ 客户端以SupportPacs 的形式提供。您可以下载以下内容之一:

    请务必使用您正在使用的客户端版本的信息中心!

    【讨论】:

    • 我的机器上安装了 MQv7.0.1.7。还有 MQ java 程序在这台机器上运行没有任何错误。
    • 您是否调和了工作代码和非工作代码之间的差异?如果您首先获取setjmsenv(或setjmsenv64)脚本,它是否可以正常运行?要么配置不同,要么代码调用 V7.0.1.7 中不存在的类,或者两者兼而有之。 setjmsenv 至少可以排除配置问题。确保获取它,而不仅仅是运行它。即做. ./setjmsenv 而不是简单的./setjmsenv
    • 是的。我也尝试运行 setjmsenv。其他代码工作正常。我错过了从我现在添加的异常中再添加一行。它说找不到主要课程。有什么线索吗??
    • 通常这将指向 jar 文件中的错误文件夹结构。但是在这种情况下,异常是从 in 主线程中引发的。显然,Java 找到了主类,但该类似乎找不到自己。我会寻找一个范围不正确的变量或方法。
    • 我尝试了另一种方法。只有当我将其作为 jar 文件运行时才会出现此异常。我在 jar 中遗漏了什么具体的东西???
    【解决方案2】:

    这意味着您的 CLASSPATH 中没有包含 com.ibm.mq.MQException 的 .class 文件的 JAR。

    这是 Java 101。

    This 解释了如何处理它。

    找到此链接是 Google 101。

    【讨论】:

      猜你喜欢
      • 2012-12-02
      • 1970-01-01
      • 2021-12-31
      • 2018-10-10
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多