gpt4 book ai didi

IBM MQ 绑定(bind)连接的 Java 程序中出现 java.lang.UnsatisfiedLinkError : mqjbnd05 (Not found in java. library.path) 错误

转载 作者:行者123 更新时间:2023-12-01 20:05:44 26 4
gpt4 key购买 nike

问题描述:

我已经安装了 MQ Server 和 MQ Client 版本 9.0。我已经定义了队列管理器以及队列和主题。我正在使用 Java 7。我开发了一个独立的 java 客户端,以绑定(bind)模式连接到队列管理器。 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 代码粘贴在下面:

/**
*
*/
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:\Program Files\IBM\MQ\java\lib另外,在 lib64 路径中,我已经检查过,但文件丢失。 C:\Program Files\IBM\MQ\java\lib64

我已将 CLASSPATH 变量设置为指向正确的 MQ lib 目录。

我尝试将 lib 目录位置更改为服务器和客户端,但是,文件“mqjbnd05”到处都丢失了,所以正如预期的那样,遇到了相同的错误。

使用注释掉的部分的同一段代码在客户端模式下运行良好。请让我知道在绑定(bind)模式下连接时我还错过了什么。

我正在使用以下 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

最佳答案

mqjbnd05 已从 MQ v7 中的 MQ 产品中删除,而是使用具有可在后续版本中使用的接口(interface)的通用 mqjbnd。但是,这意味着如果您正在运行 Java 应用程序并获取 MQ v6 或更早版本的 jar 文件,但使用 MQv6 之后的 MQ 产品安装,那么您将收到报告的错误。我在 MQv9 代码库中找不到 mqjbnd05 的引用。

鉴于您在评论中说您有 mqjbnd.dll 和 MQServer+MQClient v9,那么我能想到实现此目的的唯一方法是您从类路径中从 MQv7 之前的版本中获取 jar,或者您有构建您的应用程序并将 MQ jar 包含在您的应用程序中。

根据您运行应用程序的方式,您可以尝试将 -verbose 选项添加到 java 启动以查看 MQ jar 来自何处。

关于IBM MQ 绑定(bind)连接的 Java 程序中出现 java.lang.UnsatisfiedLinkError : mqjbnd05 (Not found in java. library.path) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47419394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com