java.lang.NoClassDefFoundError: Could not initialize class com.ibm.mq.jms.MQQueueConnectionFactory

java.lang.NoClassDefFoundError: Could not initialize class com.ibm.mq.jms.MQQueueConnectionFactory

我在开始我的项目时遇到问题。

环境:

Tomcat 6, Jdk_6.45, 已添加: com.ibm.mq.jar, com.ibm.mqjms.jar,

Context.xml

<Context>
...
<Resource name="jms/sl.mqfactory" type="com.ibm.mq.jms.MQQueueConnectionFactory"
        factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory" description="JMS Queue Connection Factory"
        HOST="mqqs01.s.abc.co.uk" PORT="53162" CHAN="MQ.CLT.BLP.CHL.DEV"
        TRAN="1" CCS="819" QMGR="QS01" auth="Container" username="" password="" />

</Context>

Spring:

<bean id="jndiConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="${sl.mqfactory}" /> <!--from properties file -->
        <property name="proxyInterface" value="javax.jms.QueueConnectionFactory"/>
</bean>

异常:

java.lang.NoClassDefFoundError: Could not initialize class com.ibm.mq.jms.MQQueueConnectionFactory

完成 this link 之后,我添加了 J2ee.jar [没有 servlet 包|在我的案例中是 jar 中的文件夹(1.4.1)]

现在可以使用了。

如果你用 servlet 文件夹添加 j2ee jar tomcat 将忽略它 jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/..

其实MQQueueConnectionFactory需要javax.resource-api