Java IBM MQ-NoSuchMethodError-getQmgrSplCapability()

Java IBM MQ-NoSuchMethodError-getQmgrSplCapability(),java,ibm-mq,websphere-7,Java,Ibm Mq,Websphere 7,我正在使用Websphere Application Server 7.0版和Websphere MQ 7.5.0.2版。我已经构建了一个.war文件并将其部署在服务器上,但是当我尝试发送一条MQ消息时,事情发生了爆炸,我收到了下面的错误消息 [6/6/16 13:28:53:849 CDT] 0000001a ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: Uncaught e

我正在使用Websphere Application Server 7.0版和Websphere MQ 7.5.0.2版。我已经构建了一个.war文件并将其部署在服务器上,但是当我尝试发送一条MQ消息时,事情发生了爆炸,我收到了下面的错误消息

[6/6/16 13:28:53:849 CDT] 0000001a ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper 
service SRVE0068E: Uncaught exception created in one of the service methods of the servlet action in application xxxx_war. Exception created : 
java.lang.NoSuchMethodError: com/ibm/mq/jmqi/handles/Hconn.getQmgrSplCapability()Lcom/ibm/mq/constants/QmgrSplCapability;
at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect(InterceptedJmqiImpl.java:313)
我已经检查了.war文件,该类确实存在于其中。我是WAS的noob,这可能是我的WAS配置的问题吗?我知道这并不是很多信息,但我只是在寻找解决这类问题的正确方向


任何帮助都将不胜感激。

这里的问题很简单。您已经在应用程序中绑定了WebSphere MQ客户端jar文件。这是不受支持的,可能会导致各种问题,如加载的类的混合版本、奇怪的行为、ClassNotFoundError等。它也不受任何方式的支持

混合版本控制正是问题所在,因为您的应用程序中既有MQ V7.5 Java客户端类,也有WebSphere Application Server WSAS V7.0本身包含的V7.0.1类。ese.intercept类存在于绑定的V7.5 JAR中,但它们试图查找未定义的V7.0.1类中的常量

WSAS提供了一个名为WebSphere MQ JCA资源适配器WMQ RA的组件。它处理与MQ队列管理器的所有通信,并支持JMS API类和Java API类,尽管在可能的情况下应使用前者。尽管WSAS V7.0提供了WMQ V7.0.1 Java客户机类的一个版本,但它们不能应用于任何版本的队列管理器。WSAS使WMQ RA中JMS/Java类的所有MQ类可供部署的应用程序使用

因此,请解压缩.war应用程序,删除其中的MQ Java客户端JAR,重新打包,重新部署,然后重试


希望这有帮助

这里的问题很简单。您已经在应用程序中绑定了WebSphere MQ客户端jar文件。这是不受支持的,可能会导致各种问题,如加载的类的混合版本、奇怪的行为、ClassNotFoundError等。它也不受任何方式的支持

混合版本控制正是问题所在,因为您的应用程序中既有MQ V7.5 Java客户端类,也有WebSphere Application Server WSAS V7.0本身包含的V7.0.1类。ese.intercept类存在于绑定的V7.5 JAR中,但它们试图查找未定义的V7.0.1类中的常量

WSAS提供了一个名为WebSphere MQ JCA资源适配器WMQ RA的组件。它处理与MQ队列管理器的所有通信,并支持JMS API类和Java API类,尽管在可能的情况下应使用前者。尽管WSAS V7.0提供了WMQ V7.0.1 Java客户机类的一个版本,但它们不能应用于任何版本的队列管理器。WSAS使WMQ RA中JMS/Java类的所有MQ类可供部署的应用程序使用

因此,请解压缩.war应用程序,删除其中的MQ Java客户端JAR,重新打包,重新部署,然后重试


希望这有帮助

我在camel和IBM MQ上遇到了同样的问题,在这里,我使用了一个定制的内部jar,它导入的IBM MQ版本与我在项目中导入的版本不同。将版本与从属jar对齐,这样就解决了问题

我在camel和IBM MQ上遇到了同样的问题,在这里,我使用了一个定制的内部jar,它导入的IBM MQ版本与我在项目中导入的版本不同。将版本与从属jar对齐,这样就解决了问题

很难说你想做什么。将servlet中的代码添加到问题中。一般来说,您不应该将MQ相关的JAR打包到应用程序中,而应该使用JNDI查找MQ资源和JMS API来发送/接收消息。很难说您想做什么。将servlet中的代码添加到问题中。一般来说,您不应该将与MQ相关的JAR打包到应用程序中,并使用JNDI查找MQ资源和JMS API来发送/接收消息。