我正在尝试使用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,,MQTopicConnectionFactory 和MQXAConnectionFactoryMQXAQueueConnectionFactoryMQXATopicConnectionFactory
有关不同连接/绑定选项的更多信息,请查看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
您可能在CLASSPATH,lib或EAR中都有一些较旧的MQ jar文件.
删除它们你应该没事.
您不应将MQ文件放在EAR或WEB-INF/lib文件夹中.它们应该位于appserver的类路径中.
| 归档时间: |
|
| 查看次数: |
19557 次 |
| 最近记录: |