IBM MQ的学习已经有一段时间了,今天重新打开eclipse准备搭建一个系统跑MQ。结果就出现了以下症状:
com.ibm.msg.client.jms.DetailedJMSException: JMSFMQ6312: Java? MQI 中发生异常。
Java? MQI 已抛出描述该问题的异常。
请参阅链接的异常以获取进一步的信息。
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:319)
at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:233)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:6889)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:6277)
at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:285)
at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6233)
at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:120)
at com.ibm.mq.jms.MQQueueConnectionFactory.createConnection(MQQueueConnectionFactory.java:203)
at org.springframework.jms.connection.SingleConnectionFactory.doCreateConnection(SingleConnectionFactory.java:365)
at org.springframework.jms.connection.SingleConnectionFactory.initConnection(SingleConnectionFactory.java:305)
at org.springframework.jms.connection.SingleConnectionFactory.getConnection(SingleConnectionFactory.java:283)
at org.springframework.jms.connection.SingleConnectionFactory.createConnection(SingleConnectionFactory.java:224)
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:180)
at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:413)
at org.springframework.jms.listener.AbstractJmsListeningContainer.refreshSharedConnection(AbstractJmsListeningContainer.java:398)
at org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful(DefaultMessageListenerContainer.java:907)
at org.springframework.jms.listener.DefaultMessageListenerContainer.recoverAfterListenerSetupFailure(DefaultMessageListenerContainer.java:882)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1053)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2495;AMQ8568: 找不到本机 JNI 库“'?'”。 对于客户机安装,这是预期的行为。 []
at com.ibm.mq.jmqi.local.LocalMQ$1.run(LocalMQ.java:315)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.mq.jmqi.local.LocalMQ.initialise_inner(LocalMQ.java:281)
at com.ibm.mq.jmqi.local.LocalMQ.initialise(LocalMQ.java:244)
at com.ibm.mq.jmqi.local.LocalMQ.<init>(LocalMQ.java:1258)
at com.ibm.mq.jmqi.local.LocalServer.<init>(LocalServer.java:206)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.ibm.mq.jmqi.JmqiEnvironment.getInstance(JmqiEnvironment.java:681)
at com.ibm.mq.jmqi.JmqiEnvironment.getMQI(JmqiEnvironment.java:615)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:6881)
... 16 more
Caused by: java.lang.UnsatisfiedLinkError: no mqjbnd in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at com.ibm.mq.jmqi.local.LocalMQ.loadLib(LocalMQ.java:1202)
at com.ibm.mq.jmqi.local.LocalMQ.loadLib(LocalMQ.java:1090)
at com.ibm.mq.jmqi.local.LocalMQ$1.run(LocalMQ.java:290)
... 28 more
解决方案:从上图可以看出是环境中缺少mqjbnd的dll文件
在系统中打印System.getProperty("java.library.path"),然后把对应的dll文件放进打印出来的路径中
如下图打印结果:
C:\Program Files (x86)\Java\jdk1.8.0_131\bin;
C:\Windows\Sun\Java\bin;
C:\Windows\system32;
C:\Windows;
C:/Program Files (x86)/Java/jre1.8.0_131/bin/client;
C:/Program Files (x86)/Java/jre1.8.0_131/bin;
C:/ProgramFiles(x86)/Java/jre1.8.0_131/lib/i386;.;%TNS_ADMIN%;E:\apache-maven-3.0.5\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%CATALINA_BASE%\bin;%CATALINA_HOME%\bin;
C:\Program Files (x86)\IBM\WebSphere MQ_2\bin;
C:\ProgramData\Oracle\Java\javapath;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;E:\adt-bundle-windows-x86_64-20140624\sdk\platform-tools;E:\adt-bundle-windows-x86_64-20140624\sdk\tools;
C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin;E:\eclipse-mar\eclipse-mars;;.
结果很显然了...在上面找到你的扫描路径,把文件添加进去,文件lib下、lib64下都应该有文件CV过来
庄生晓梦迷蝴蝶.....