15

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。

4

6 に答える 6

26

私はこのエラーを自分で処理しなければならなかったので; 正しい答えを見つけるのにかなりの時間がかかりました。このスレッドに来る次の人と共有したいと思います...

実際、問題の解決策は非常に簡単でした (少なくとも私の場合)。またはインストールの問題CLASSPATHとは関係ありませんでした。java.library.path

MQConnectionFactoryをクライアントモードに切り替えるのを忘れただけです。

これは、単に呼び出すことによって行う必要があります

cf.setTransportType(WMQConstants.WMQ_CM_CLIENT);

また

cf.setTransportType(WMQConstants.WMQ_CM_BINDINGS_THEN_CLIENT);

またはニーズに合ったその他の接続タイプ。
デフォルトでは、ConnectionFactory は「バインディング」モード ( WMQ_CM_BINDINGS) になっています。これは、IBM のドキュメントに記載されているように、ローカル サーバーのインストールを対象としています。

バインディング・モードでキュー・マネージャーに接続するには、WebSphere MQ classes for JMS アプリケーションが、キュー・マネージャーが実行されているのと同じシステムで実行されている必要があります。

このトランスポート タイプは、XMSC_WMQ_CONNECTION_MODEJNDIWMQConstants.WMQ_CONNECTION_MODEまたはJmsFactoryFactory.

同じことが他の ConnectionFactory タイプにも適用されます: MQQueueConnectionFactoryMQTopicConnectionFactoryMQXAConnectionFactoryMQXAQueueConnectionFactoryおよびMQXATopicConnectionFactory

さまざまな接続/バインディング オプションの詳細については、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

于 2012-05-10T07:56:29.233 に答える
6

CLASSPATH、lib、EAR のいずれかに、古い MQ jar ファイルがいくつかある可能性があります。
それらを削除すれば問題ありません。
MQ ファイルを EAR または WEB-INF/lib フォルダーに配置しないでください。アプリサーバーのクラスパスにある必要があります。

于 2010-07-20T13:07:33.370 に答える
3

I came across this while connecting using IBM MQ api. I didn't find this issue to be related to classpath either.

This happened to me when I instantiated MQQueueManager before setting MQEnvironment's hostname and channel. Just ensure that your code does not do that and that it instantiates the manager after the environment is set. Something like..

MQEnvironment.hostname = "mq hostname";
MQEnvironment.channel = "mq channel";
..more code..
this._queueManager = new MQQueueManager(qManager);

(Observed that it's OK to set MQEnvironment.port after MQQueueManager is initialized, but one would probably initialize everything related to MQEnvironment together)

于 2015-10-14T21:10:19.553 に答える
1

これは、MQ ServerではなくMQ Clientを実際にインストールした場合に発生する可能性があります。

IBM は、それに関するヘルプ ページ全体を作成しています。

WebSphere MQ クライアントのインストールで mqjb*.dll ファイルが欠落している

問題(アブストラクト)

WebSphere MQ クライアントをインストールすると、\Program Files\IBM\WebSphere MQ\Java\lib\ディレクトリに 3 つの dll がないことに気付きます。

症状

次の dll は、サーバー インストールのディレクトリに表示されますが、Java™ クライアントの一部ではありません。

  • 2003/03/17 10:59a 19,456 mqjbdf02.dll
  • 2003/03/17 10:59a 57,856 mqjbnd05.dll
  • 2003/03/17 10:59a 36,​​864 MQXAi02.dll

サブディレクトリ \jdbc\ はサーバーには表示されますが、クライアント マシンには表示されません。

  • 2003/03/17 10:59a 61,440 jdbcdb2.dll
  • 2003/03/17 10:59a 61,440 jdbcora.dll

原因

これらのファイルは、クライアントのインストールでは提供されておらず、必要もないため、欠落しています。

問題の解決

ファイルは、WebSphere MQ サーバー製品にのみ含まれています。

于 2010-07-20T12:41:14.643 に答える
0

簡単なレシピは次のとおりです。JavaVMにDLLをロードするように指示します。コードは似ていますか?たとえばSystem.loadLibrary、ロードに使用しますmqjbnd05.dllか?

はいの場合-コマンドラインからアプリケーションを起動するように、日食の外で機能しますか?この場合は、そのライブラリパスを使用してEclipseIDE全体を起動してみてください。

また、スペースを含むパス名で問題が発生することもあります。dllをにコピーし、C:\それをlibパスに配置して、再試行します。


ああ、それが問題です。指定されたdllがありません。このブログには解決策があります。幸運を!

于 2010-07-20T11:25:42.043 に答える