私はWebsphere MQ classes for Java
プログラミングの非常に初心者です。
この方法に従って、TCP/IP を介してキューに接続してメッセージを読み取ることができる小さなアプリケーションを作成することにしました。
このガイドに従ってください: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=%2Fcom.ibm.mq.csqzaw.doc%2Fja10410_.htm
ポイント 4 で、Websphere Client
次を使用して Windows コマンド プロンプトでインストール (バージョン: 7.0.1.8)
java -Djava.library.path=library_path MQIVP
をテストすることをお勧めします。
Eclipse IDE
アプリケーションが実行され、次のコードを使用して簡単なプログラムを書き始めました。
import com.ibm.mq.MQEnvironment;
public class MQtestMain {
public static void main(String[] args) {
System.out.println("main");
new MQtestMain();
}
public MQtestMain(){
System.out.println("MQtestMain");
MQEnvironment.hostname = "my.host.name";
MQEnvironment.channel = "my.channel";
MQEnvironment.port = 1414;
}
}
何もする必要はありませんが、すべてが正しく設定されていることを確認するための単なるテストです。
「C:\Program Files\IBM\WebSphere MQ\java\lib」から「com.ibm.mq.jar」と「com.ibm.mq.jmqi.jar」の両方でカスタム ライブラリを設定しましたが、エラーは発生しません。コンパイル時に報告されます。
そこからアプリケーションを実行するEclipse
と、コンソールに「main」と「MQtestMain」が正しく出力されます。
したがって、エクスポートに進みました: [ファイル] > [エクスポート] > [実行可能な Jar
] で、[ライブラリの処理] を [必要なライブラリを生成された JAR にパッケージ化する] に設定します。
残念ながら、Windows コマンド プロンプトからプログラムを実行するとjava -jar MQtest.jar
、結果は次のようになります。
main
MQtestMain
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.NoClassDefFoundError: javax/resource/ResourceException
at com.ibm.mq.MQEnvironment.<clinit>(MQEnvironment.java:576)
at MQtestMain.<init>(MQtestMain.java:21)
at MQtestMain.main(MQtestMain.java:14)
... 5 more
Caused by: java.lang.ClassNotFoundException: javax.resource.ResourceException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 8 more
1 行目と 2 行目は正しいですが、次のエラーがよくわかりません
アップデート:
より多くの情報を提供しようとします:
アプリケーションをメインclass
ファイルから実行することには問題はないと言いましたが、jar
ファイルから実行する間、IBM ライブラリを見つけることができないようです。このアプリケーションで使用される 2 つの jar パッケージを含む「MQ classes for Java」という名前
の個人用ライブラリを作成しました。
プロジェクトファイルの内容は次のとおりです。eclipse
.classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/MQ classes for Java"/>
<classpathentry kind="output" path="bin"/>
</classpath>
WMQ クライアントがインストールされているすべてのマシンから起動するために、正しいライブラリを実行可能な jar にリンクする方法はありますか?
解決:
いくつかの依存関係が見つからないため、エラーは解決され、すべてのIBM classes for Java
jar
ファイルがWMQ Client
フォルダー インストール ("C:\Program Files\IBM\WebSphere MQ\java\lib")に含められました。