문제 설명을 바인딩을위한 자바 프로그램에서 mqjbnd05 (java.library.path에서 찾을 수 없음) 오류. 큐 관리자와 대기열 및 주제를 정의했습니다. Java 7을 사용하고 있습니다. BINDING 모드에 대기열 관리자에 연결하는 독립형 Java 클라이언트를 개발했습니다. Java 응용 프로그램과 MQ는 동일한 서버에서 호스팅되므로 BINDING 연결에 필요한 사전 요구 사항이 있습니다. 내 응용 프로그램을 실행하려고 할 때에서 java.lang.UnsatisfiedLinkError : 나는 MQ 서버 및 MQ 클라이언트 모두 9.0 버전으로 설치 한</p> <p>: IBM MQ는 연결을
그러나 나는 오류가 점점 오전 :
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).....
가지고이 관련된 몇 가지 주제를 검색 있지만 명확한 해결책을 찾을 수 없습니다. 나는 아래에있는 내 자바 코드를 붙여 오전 : C : \ 프로그램 파일 \ IBM \ MQ \ 자바 \ lib에 또한 lib64에의
/**
*
*/
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 : \ 프로그램 파일 \ IBM \ MQ \ 자바 \의 lib64에 내가 올바른 MQ lib 디렉토리를 가리 키도록 내 CLASSPATH 변수를 설정
.
lib 디렉토리 위치를 서버와 클라이언트 모두로 변경하려고했지만 "mqjbnd05" 파일이 누락되어 예상되는 동일한 오류가 발생합니다. 주석 처리 된 섹션을 사용하여 코드의
같은 조각은 제가 모드을 구속력 에 연결 놓치게하고 다른 알려 호야 클라이언트 모드에 대한 벌금을 실행 중입니다. 추가
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;
한 가지입니다 :
나는 다음과 ENV 변수를 사용하고 난 파일이를 mqjbnd.dll하지만 mqjbnd05
@Som이 JasonE의 말에 덧붙이 자면, 'CLASSPATH'는 MQ v9와 함께 설치 될 디렉토리가 아닌 다른 디렉토리를 가지고 있음을 나타내지 않습니다. com.ibm. *을 확인하십시오.응용 프로그램 jar 파일 또는 프로젝트에 포함 된 jar 파일 'META-INF/MANIFEST.MF' 파일을 검사하고'Implementation-Version'을 찾으면 jar 파일이있는 MQ 버전을 원할 것입니다. 이 이전 MQ jar 파일에 대한 참조를 응용 프로그램에서 제거하고'CLASSPATH'에 나열된 현재 jar 파일을 선택하도록해야합니다. – JoshMc
@ JasonE : 안녕 Jason, 네, 맞습니다. 이전 버전의 com.ibm.mq.jar 및 com.ibm.mqjms.jar를 사용하고있었습니다. MQ v9.0 제품에서 나온 패키지로 대체했습니다. 그리고 내 코드가 성공적으로 실행 중입니다. 의견을 보내 주셔서 감사합니다. JoshMc : 네, 맞습니다. 감사. – Som
@ JoshMc : 감사합니다. Josh, 맞습니다. – Som