質問
この問題に数時間、この問題に固執しています、誰かが何かアイデアをしていますか?
java.lang.nosuchmethoderror:com.ibm.mq.mqexception。(ljava/lang/string; ljava/lang/string; ii)v at com.ibm.msg.client.wmq.common.internal.reason.createexcection(理由(理由.java:223)at com.ibm.msg.client.wmq.internal.wmqmessageconsumer.checkjmqicallsuccess(wmqmessageconsumer.java:123) )com.ibm.msg.client.wmq.internal.wmqsyncconsumershadow.receiveinternal(wmqsyncconsumershadow.java:233)at com.ibm.msg.client.wmq.internal.wmqconsumershadow. wmqconsumershaw.javadow. ibm.msg.client.wmq.internal.wmqmessageconsumer.receive(wmqmessageconsumer.java:450)at com.ibm.msg.client.jms.internal.jmessageconsumerimpl.receiveinboundmessage(jmssmessumerimpl.java:742) client.jms.internal.jmssageconsumerimpl.receive(jmsmessageconsumerimpl.java:423)com.ibm.mq.jms.mqmessageconsumer.receive(mqmessageconsumer.java:258)
MQネイティブライブラリを使用してメッセージを配置したときにこのエラーが発生し、JMS APIを使用してそれらを読み取ります。 JMSの読み取りは、上記の例外をスローすることに失敗します。また、問題を引き起こしていると思われるJMSセレクターも使用しています。セレクターを使用して、すべてが正常に機能します。ティア。
解決
最後に、私はこれを解決することができました、それはすべてセレクターの作成方法に関係していました。違いは、MQ APIがバイト配列として相関IDを持っていることであり、JMSはそれを文字列として取得します。このため、セレクターはメッセージを選択できず、投稿されたエラーをスローしていました。エラーはまったくデバッグフレンドリーではないため、多くの試行錯誤を行う必要がありました。とにかく今これはうまくいくので、私は嬉しいです。以下は、私がこのためにしなければならなかったコードの変更です。
// string selector = "jmscorrelationid = '" + corleationid + "'";変更前
StringBuffer fBuf = new StringBuffer("JMSCorrelationID = 'ID:");
byte[] correlBytes = corleationID.getBytes();
for(int i=0; i<24; i++) {
if (i>=correlBytes.length) {
fBuf.append("00");
} else {
byte b = correlBytes[i];
String hexStr = Integer.toHexString(b);
// -ve values produce 8 char results
if (hexStr.length()>2) hexStr = hexStr.substring(hexStr.length()-2);
// small values produce 1 char results
if (hexStr.length()<2) fBuf.append("0");
fBuf.append(hexStr);
}
}
fBuf.append("'");
String filter = fBuf.toString();
System.out.println("creating receiver with filter: "+filter);
QueueReceiver queueReceiver = queueSession.createReceiver(inQueue,filter);
// Queuereceiver Queuereceiver = queueSession.createreceiver(尋問、セレクター);
IBM Docsからコードを参照しました。
他のヒント
MQライブラリの間違ったバージョンがあります。最新のバージョンに対してコードを実行してみてください。