java.lang.UnsatisfiedLinkError

2022-09-03 09:32:13

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

java.lang.UnsatisfiedLinkError: no mqjbnd05 in java.library.path

我正在通过

-Djava.library.path="C:\Program Files\IBM\WebSphere MQ\java\lib"

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


答案 1

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

实际上,这个问题的解决方案非常简单(至少在我的情况下)。它与任何 或安装问题无关。CLASSPATHjava.library.path

我只是忘记切换到客户端模式。MQConnectionFactory

这必须通过简单地调用来完成

cf.setTransportType(WMQConstants.WMQ_CM_CLIENT);

cf.setTransportType(WMQConstants.WMQ_CM_BINDINGS_THEN_CLIENT);

或任何其他连接类型,满足您的需求。
缺省情况下,ConnectionFactory 处于“绑定”模式 (),用于本地服务器安装,如 IBM 文档中所述:WMQ_CM_BINDINGS

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

当使用 JNDI 或 时,此传输类型与 () 属性相同。XMSC_WMQ_CONNECTION_MODEWMQConstants.WMQ_CONNECTION_MODEJmsFactoryFactory

这同样适用于其他 ConnectionFactory 类型:、 、 、 和MQQueueConnectionFactoryMQTopicConnectionFactoryMQXAConnectionFactoryMQXAQueueConnectionFactoryMQXATopicConnectionFactory

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


答案 2

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


推荐