gpt4 book ai didi

java - 使用适用于 Java 的 MQ 类运行简单 jar 时出错

转载 作者:可可西里 更新时间:2023-11-01 14:42:02 25 4
gpt4 key购买 nike

我是 Java 的 Websphere MQ 类 编程的初学者。
我决定按照这种方式编写一个小型应用程序,该应用程序能够通过 TCP/IP 连接队列并从队列中读取消息。

遵循本指南:http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=%2Fcom.ibm.mq.csqzaw.doc%2Fja10410_.htm

在第 4 点,建议在 Windows 命令提示符下测试 Websphere Client 安装(版本:7.0.1.8):
java -Djava.library.path=library_path MQIVP
其中“library_path”对我来说是“C:\Program Files\IBM\WebSphere MQ\java\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:\编译时不报错。

Eclipse 运行应用程序,它在控制台上正确打印出“main”和“MQtestMain”。

因此我开始导出它:File > Export > Runnable 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

第一行和第二行是对的但是后面的错误我实在看不懂


更新:

我试着给你更多的信息:
正如我所说,从其主 class 文件运行应用程序没有问题,而从 jar 文件执行它似乎无法找到 IBM 库。< br/>我在 eclipse 中创建了一个名为“MQ classes for Java”的个人库,其中包含此应用程序使用的两个 jar 包。
这里是项目 .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>

有没有办法将正确的库链接到可运行的 jar,以便从每台安装了 WMQ 客户端的机器上启动它?


解决方案:

由于未找到某些依赖项而导致的错误已得到解决,包括所有 IBM classes for Java jar 文件到 WMQ Client文件夹安装("C:\Program Files\IBM\WebSphere MQ\java\lib")

最佳答案

我通过添加 javax 依赖项解决了这个问题:

<dependency>
<groupId>javax.resource</groupId>
<artifactId>connector-api</artifactId>
<version>1.5</version>
</dependency>

关于java - 使用适用于 Java 的 MQ 类运行简单 jar 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199996/

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