java.lang.UnsatisfiedLinkError 错误

标签 java jms ibm-mq

我正在尝试使用 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。

最佳答案

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

其实解决问题的方法很简单(至少对我来说是这样)。它与任何 CLASSPATHjava.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 类型:MQQueueConnectionFactoryMQTopicConnectionFactoryMQXAConnectionFactoryMQXAQueueConnectionFactoryMQXATopicConnectionFactory

查看 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/

相关文章:

java - 为什么我应该使用 JMS 而不是 RMI+Queue?

ibm-mq - 如何在 Linux 中进行队列管理器备份和恢复

python - 如何使用 CCDT 文件、用户 ID 和密码在 Python 中连接到 IBM MQ

ibm-mq - channel 类型 SVRCONN 和 SDR/RCVR 之间有什么区别?如何决定何时使用 SVRCONN 或 SDR/RCVR 对?

java - SEAM 有什么缺点吗?

java - Request.getparameter 从输入中丢弃特殊字符

java - jTable 单元格中的新行

java - 六角网格上的元胞自动机

java - 当 JMS Prod 位于辅助 POJO 类中时,如何在事务中包含 JMS Producer

java - 使用大日志启动时 HornetQ OutOfMemory