线程“main”中的异常java.lang.NoClassDefFoundError:com / ibm / mq / MQException

时间:2012-11-13 23:54:17

标签: java ibm-mq

当我运行我的程序时,我的异常低于

  

java -jar MQprogram.jar

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


`Exception in thread "main" java.lang.NoClassDefFoundError: com/ibm/mq/MQException
Caused by: java.lang.ClassNotFoundException: com.ibm.mq.MQException
        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)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: com.test.bo.MQprogram. Program will exit.
`

我还不清楚bug在哪里。

2 个答案:

答案 0 :(得分:3)

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

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

如果您决定从IBM的分发介质安装完整的客户端,您将获得一些其他功能,例如诊断和低级跟踪。它还确保可以应用维护。例如,您遇到的问题已在修订包中得到纠正,您只需在现有客户端安装的顶部安装修订包即可。如果您拥有的只是jar文件,则无法安装Fix Pack。

WMQ客户端以SupportPacs的形式提供。您可以下载以下其中一项:

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

答案 1 :(得分:1)

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

这是Java 101。

This解释了该怎么做。

找到此链接的是Google 101。