我正在尝试使用 JMS 访问 MQ 队列。我得到以下内容
java.lang.UnsatisfiedLinkError: no mqjbnd05 in java.library.path
我路过
-Djava.library.path="C:\Program Files\IBM\WebSphere MQ\java\lib"
在 eclipse 中运行程序时作为 VM 参数。这个问题网上讨论的很多,但都没有定论。有人解决了吗? TIA。
最佳答案
因为我不得不自己处理这个错误;我花了很多时间才找到正确的答案,我想与下一个分享这个主题的人分享...
其实解决问题的方法很简单(至少对我来说是这样)。它与任何 CLASSPATH
、java.library.path
或安装问题无关。
我只是忘了将 MQConnectionFactory
切换到客户端模式。
这必须通过简单地调用来完成
cf.setTransportType(WMQConstants.WMQ_CM_CLIENT);
或
cf.setTransportType(WMQConstants.WMQ_CM_BINDINGS_THEN_CLIENT);
或满足您需要的任何其他连接类型。
默认情况下,ConnectionFactory 处于“绑定(bind)”模式 (WMQ_CM_BINDINGS
),这是为本地服务器安装而设计的,如 IBM 文档中所述:
To connect to a queue manager in bindings mode, a WebSphere MQ classes for JMS application must run on the same system on which the queue manager is running.
当使用 JNDI 或 JmsFactoryFactory
时,此传输类型与 XMSC_WMQ_CONNECTION_MODE
(WMQConstants.WMQ_CONNECTION_MODE
) 属性相同。
同样适用于其他 ConnectionFactory 类型:MQQueueConnectionFactory
、MQTopicConnectionFactory
、MQXAConnectionFactory
、MQXAQueueConnectionFactory
和 MQXATopicConnectionFactory
查看 IMB 知识中心以获取有关不同连接/绑定(bind)选项的更多信息:
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
关于java.lang.UnsatisfiedLinkError 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289319/