3

私は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")に含められました。

4

3 に答える 3

4

javax依存関係を追加するだけでこれを解決しました:

<dependency>
    <groupId>javax.resource</groupId>
    <artifactId>connector-api</artifactId>
    <version>1.5</version>
</dependency>
于 2016-02-11T22:26:19.437 に答える
3

解決:

これらのエラーは、いくつかの依存関係が見つからないことが原因です。すべてのファイルをフォルダーのインストール (「C:\Program Files\IBM\WebSphere MQ\java\lib」)に
含めて解決できます。IBM classes for Java jarWMQ Client

于 2012-09-03T06:09:29.320 に答える
3

MQIVP テストで行ったように java.library.path を使用するか、MQ JAR ファイルを含むように CLASSPATH を設定する必要があります。

于 2012-08-30T18:07:40.917 に答える