問題の説明をバインドするためのJavaプログラムのエラー:ます。java.lang.UnsatisfiedLinkError:mqjbnd05(java.library.pathには見られない)IBM MQが接続
私は両方のバージョン9.0でMQサーバーとMQクライアントをインストールしています。キューマネージャとキューとトピックを定義しました。私はJava 7を使用しています。バインド・モードでキュー・マネージャーに接続するためのスタンドアロンJavaクライアントを開発しました。 JavaアプリケーションとMQは同じサーバー上でホストされているため、BINDING接続には必要な前提条件があります。しかし、私は自分のアプリケーションを実行しようとしていたとき、私はエラーを取得しています
:
Exception in thread "main" java.lang.UnsatisfiedLinkError: mqjbnd05 (Not found in java.library.path)
at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1279)
at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:1245)
at java.lang.System.loadLibrary(System.java:540)
at com.ibm.mq.MQSESSION.loadLib(MQSESSION.java:872).....
は持っているが、これに関連するいくつかのトピックを検索するが、任意の明確な解決策を見つけることができませんでした。私は以下の私のJavaコードを貼り付けています:します。C:\ Program Files \ IBM \ MQ \ Javaの\ libにも lib64に中
/**
*
*/
package com.binding;
import javax.jms.JMSException;
import javax.jms.Session;
import com.ibm.jms.JMSMessage;
import com.ibm.jms.JMSTextMessage;
import com.ibm.mq.jms.JMSC;
import com.ibm.mq.jms.MQQueue;
import com.ibm.mq.jms.MQQueueConnection;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import com.ibm.mq.jms.MQQueueReceiver;
import com.ibm.mq.jms.MQQueueSender;
import com.ibm.mq.jms.MQQueueSession;
/**
* @author Som
*
*/
public class MQBindingConnection {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
// Config
//cf.setHostName("localhost");
//cf.setPort(1414);
cf.setTransportType(JMSC.MQJMS_TP_BINDINGS_MQ);
cf.setQueueManager("QM.E001");
//cf.setChannel("SYSTEM.DEF.SVRCONN");
MQQueueConnection connection = (MQQueueConnection) cf.createQueueConnection("user","pass");
MQQueueSession session = (MQQueueSession) connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
MQQueue queue = (MQQueue) session.createQueue("BINDING.CONN");
MQQueueSender sender = (MQQueueSender) session.createSender(queue);
MQQueueReceiver receiver = (MQQueueReceiver) session.createReceiver(queue);
long uniqueNumber = System.currentTimeMillis() % 1000;
JMSTextMessage message = (JMSTextMessage) session.createTextMessage("SimplePTP "+ uniqueNumber);
// Start the connection
connection.start();
sender.send(message);
System.out.println("Sent message:\\n" + message);
JMSMessage receivedMessage = (JMSMessage) receiver.receive(10000);
System.out.println("\\nReceived message:\\n" + receivedMessage);
sender.close();
receiver.close();
session.close();
connection.close();
System.out.println("\\nSUCCESS\\n");
}
catch (JMSException jmsex) {
System.out.println(jmsex);
System.out.println("\\nFAILURE\\n");
}
catch (Exception ex) {
System.out.println(ex);
System.out.println("\\nFAILURE\\n");
}
}
}
私はディレクトリの場所にあるファイル "mqjbnd05" を見つけることができませんでしたパス私はチェックしたが、ファイルが見つからない。 C:\プログラムファイル\ IBM \ MQ \ Javaの\のlib64に
私は正しいMQ libディレクトリを指すように私のCLASSPATH変数が設定されています。
libディレクトリの場所をサーバーとクライアントの両方に変更しようとしましたが、ファイル"mqjbnd05"がどこにも存在しないため、同じエラーが発生することがあります。
コメントアウトセクションを使用してコードの同じ部分は、クライアントモードしなさいの罰金は私が私が結合様式に接続するために出て行方不明です他に何を知らせ実行されています。
私は、次のENV変数を使用しています:追加する
MQ_JAVA_LIB_PATH = C:\Program Files\IBM\MQ\java\lib64;C:\Program Files\IBM\MQ\java\lib
MQ_FILE_PATH = C:\Program Files\IBM\MQ
MQ_JAVA_DATA_PATH = C:\ProgramData\IBM\MQ
MQ_JAVA_INSTALL_PATH = C:\Program Files\IBM\MQ\java
MQ_JRE_PATH = C:\Program Files\IBM\MQ\java\jre
LIB = C:\Program Files\IBM\MQ\tools\lib64;C:\IBM\SQLLIB\LIB;C:\Program Files\IBM\MQ\tools\lib
CLASSPATH = C:\Program Files\IBM\MQ\java\lib\com.ibm.mqjms.jar;C:\Program Files\IBM\MQ\java\lib\com.ibm.mq.jar;C:\Program Files\IBM\MQ\java\lib;C:\Program Files\IBM\MQ\java\lib64;
ことの一つは、次のとおりです。私は、ファイルにmqjbnd.dllを持っていなくmqjbnd05
JasonEが言ったことを追加するために、あなたの 'CLASSPATH'はMQ v9でインストールされるディレクトリ以外のディレクトリを持っていることを示していません。 com.ibm。*を確認してください。アプリケーションjarファイルまたはプロジェクトに含まれるjarファイル'META-INF/MANIFEST.MF'ファイルをチェックして' Implementation-Version'を探すと、これはjarファイルが入っているMQのバージョンを知ることを意味します。この古いMQ jarファイルへの参照をアプリケーションから削除し、 'CLASSPATH'にリストした現在のjarファイルを取得させるべきです。 – JoshMc
@JasonE:こんにちはジェイソン、はい、あなたは正しいです。私はcom.ibm.mq.jarとcom.ibm.mqjms.jarの古いバージョンを使用していました。私はそれらをMQ v9.0製品から来たものに置き換えました。私のコードは正常に実行されています。あなたの提案に感謝します。 JoshMc:はい、あなたは正しいです。ありがとう。 – Som
@ JoshMc:ありがとう。ジョシュ、そうだよ。 – Som