2012-08-30 3 views
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_.htmWebsphere Client 설치 (버전 : 7.0.1.8)를 테스트하는 것이 좋습니다 지점 4에서Java 용 MQ 클래스로 간단한 jar를 실행하는 중 오류가 발생했습니다.

: 나를 위해 'LIBRARY_PATH'는 "C는
java -Djava.library.path=library_path MQIVP
입니다 창에 사용 명령 프롬프트이 설명서 다음

: \ 프로그램 파일 \ IBM \는 WebSphere MQ \ 자바 \ lib에 "

응용 프로그램 실행을하고 난 여기 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"이 올바르게 인쇄됩니다.

그러므로 나는 그것을 수출 진행 한 : 파일> 내보내기>의 Runnable 항아리
설정 '생성 된 JAR로 패키지 필요한 라이브러리'불행하게도

내가 창에서 프로그램을 실행 명령 프롬프트 경우에 '도서관 처리'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 라인은 정확하지만 난 정말 다음과 같은 오류를 이해하지 못하는

,581,088,243,210는

업데이트 : 내가 당신에게 더 많은 정보를 제공하기 위해 노력

: 나는 문제가 없는지 주요 class 파일에서 응용 프로그램을 실행 말한 것처럼 jar 파일을 실행하면서,
을 그렇지 않아 보인다 IBM 라이브러리를 찾을 수 있습니다.
이 응용 프로그램에서 사용하는 두 개의 jar 패키지가 들어있는 eclipse이라는 개인 라이브러리를 "Java 용 MQ 클래스"라는 이름으로 만들었습니다. 여기
프로젝트 .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 클라이언트와 모든 기계 설치를 형성 시작하기 위해 실행 가능한 항아리에 올바른 라이브러리를 링크하는 방법이 있나요?


솔루션 : \ 프로그램 파일 \ IBM : 인해 일부 종속성

오류가, 포함 해결 된 찾을 수 없습니다 WMQ Client 폴더 소 instalation ("C로 모든IBM classes for Javajar 파일 \ WebSphere MQ \ java \ lib ")

+0

설치된 WMQ 클라이언트 버전은 무엇입니까? ('dspmqver' 또는''C : \ Program Files \ IBM \ WebSphere MQ \ bin \ dspmqver "'라고 입력했을 때 표시되는 내용은 무엇입니까?) –

+0

결과 :'Name : WebSphere MQ' 'Version : 7.0.1.8' 'CMVC 수준 : p701-108-120224' 'BuildType : IKAP - (Production)' – Mave751

+0

[tag : eclipse] 태그로 [tag : command-prompt] 태그를 대체하는 것이 더 나을 것 같아요. 이 문제를 MQ 문제로 말했지만, 실제로 말하는 것은 "Eclipse에서 작동하는 프로그램이 있지만 종속 라이브러리를 포함하는 실행 가능한 jar를 만들려고하면 ClassNotFoundException이 발생합니다. 실행 시간. " MQ 문제보다 이클립스 문제와 비슷한 것으로 들리네. 물론 원하는 경우 MQ 문제로 처리 할 수 ​​있으며'CLASSPATH' 및'-Djava.library.path'를 사용하여 확실히 작동시킬 수 있습니다. –

답변

3

솔루션 :

이러한 오류가 발견되지 않는 일부 의존성에 기인한다;
를 포함하여 해결 될 수있는 WMQ Client 폴더 소 instalation ("C : \ 프로그램 파일 \ IBM \는 WebSphere MQ \ 자바 \ lib 디렉토리")에 모든IBM classes for Javajar 파일 난 그냥 javax의 의존성을 추가하여이 문제를 해결

3

MQIVP 테스트에서 사용한 것처럼 java.library.path를 사용하거나 MQ JAR 파일을 포함하도록 CLASSPATH를 설정해야합니다.

+0

'java -Djava.library.path = "C : ₩ Program Files ₩ IBM ₩ WebSphere MQ ₩ java ₩ lib"-jar MQtest.jar' 명령으로 사용자의 제안을 따르려고했습니다. 동일한 오류가 발생합니다. 그러므로 나는 잘못된 길을 썼다고 생각합니다. 어쨌든 JAR 파일은 실행에 필요한 모든 파일과 함께 "풀 팩"이라고 생각했는데 잘못입니까? 이클립스 프로젝트의 bin 폴더에서'java MQtestMain'을 실행하면 제대로 실행되지만 다른 컴퓨터에서 실행해야합니다. – Mave751

+0

다른 컴퓨터에서 IBM의 WMQ 클라이언트 코드를 설치해야합니다. IBM의 WMQ 코드 용 재배포 가능 라이센스 또는 패키지는 없으며 단지 jar 파일을 가져 오거나 패키지하는 경우에는 지원되지 않습니다. –

+0

좋아, 내가 응용 프로그램을 실행하려고하는 모든 컴퓨터에'WMQ Client'를 설치하는 데 문제가 없지만 jre 대신에 "단일 파일"프로그램 (예 : jre)을 사용하는 것을 선호합니다. 클래스 (별도의'.class' 파일에 그래픽 인터페이스가있는 경우를 생각해보십시오). 실행 가능한 JAR을 실행하는 올바른 방법은 무엇입니까? – Mave751

2

:

<dependency> 
    <groupId>javax.resource</groupId> 
    <artifactId>connector-api</artifactId> 
    <version>1.5</version> 
</dependency> 
관련 문제