java.lang.UnsatisfiedLinkError中

hak*_*ish 14 java jms ibm-mq

我正在尝试使用JMS访问MQ队列.我得到了以下

java.lang.UnsatisfiedLinkError: no mqjbnd05 in java.library.path
Run Code Online (Sandbox Code Playgroud)

我过世了

-Djava.library.path="C:\Program Files\IBM\WebSphere MQ\java\lib"
Run Code Online (Sandbox Code Playgroud)

作为在eclipse中运行程序时的VM参数.这个问题在网上讨论得很多,但没有任何结论.有人解决了吗?TIA.

Dan*_*ler 19

因为我不得不自己处理这个错误; 我花了很多时间才找到正确的答案,我想与下一个人分享,这个问题来自于...

实际上问题的解决方案非常简单(至少在我的情况下).这是不相关的任何CLASSPATH,java.library.path或安装问题.

我只是忘了切换MQConnectionFactory到客户端模式.

必须通过简单的呼叫来完成

cf.setTransportType(WMQConstants.WMQ_CM_CLIENT);
Run Code Online (Sandbox Code Playgroud)

要么

cf.setTransportType(WMQConstants.WMQ_CM_BINDINGS_THEN_CLIENT);
Run Code Online (Sandbox Code Playgroud)

或任何其他适合您需求的连接类型.
默认情况下,ConnectionFactory处于"绑定"模式(WMQ_CM_BINDINGS),该模式用于本地服务器安装,如IBM文档中所述:

要以绑定模式连接到队列管理器,JMS应用程序的WebSphere MQ类必须在运行队列管理器的同一系统上运行.

使用JNDI或时,此传输类型与XMSC_WMQ_CONNECTION_MODE(WMQConstants.WMQ_CONNECTION_MODE)属性相同JmsFactoryFactory.

这同样适用于其他类型的ConnectionFactory: ,MQQueueConnectionFactory,,MQTopicConnectionFactoryMQXAConnectionFactoryMQXAQueueConnectionFactoryMQXATopicConnectionFactory

有关不同连接/绑定选项的更多信息,请查看IMB知识中心:

https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q031720_.htm https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com .ibm.mq.dev.doc/q030560_.htm


Rom*_*eau 5

您可能在CLASSPATH,lib或EAR中都有一些较旧的MQ jar文件.
删除它们你应该没事.
您不应将MQ文件放在EAR或WEB-INF/lib文件夹中.它们应该位于appserver的类路径中.