我正在尝试导出 Eclipse
项目到 JAR
可执行文件。
该项目包括一个带有两个 IBM 包的个人库 com.ibm.mq.jar
和com.ibm.mq.jmqi.jar
从Eclipse
运行应用程序没有错误运行按钮或通过命令:java MainClass
来自项目 bin 文件夹。
不幸的是,一旦创建了 jar(文件 > 导出 > 可运行 Jar)并启动 java -jar MainClass.jar
这是结果:
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(JarRsrcLoader.java:58)
Caused by: java.lang.NoClassDefFoundError: javax/resource/ResourceException
at com.ibm.mq.MQEnvironment.<clinit>(MQEnvironment.java:520)
at MQtestMain.<init>(MQtestMain.java:38)
at MQtestMain.main(MQtestMain.java:18)
... 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
我也尝试过Fat Jar
用于导出的插件,但结果为 java -jar MainClass_fat.jar
非常相似:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/resource/ResourceException
at com.ibm.mq.MQEnvironment.<clinit>(MQEnvironment.java:520)
at MQtestMain.<init>(MQtestMain.java:38)
at MQtestMain.main(MQtestMain.java:18)
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 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 3 more
导出和运行Eclipse
的正确方法是什么?项目到 Jar
文件包括 IBM MQ Classes for Java
图书馆?
更新 1:不必要,但对于找到解决方案非常有用。
通过整合内容建议:
包括javaee.jar
从 Java EE 安装中获取文件以导入项目中包含的 IBM 类 jar 的所有依赖项。
解决方案:尊重 Java 依赖项的所有 IBM 类。
将 jar
导入到自定义库全部文件来自C:\...\IBM\WebSphere MQ\java\lib
从Eclipse
导出为可运行的Jar (也不需要 Fat Jar 插件)
最佳答案
javax.resource.ResourceException 是 Java EE API 的一部分。
您的 Eclipse 项目可能假设此 jar 将在目标环境中可用/其要与应用程序打包的 jar 列表中没有 java-ee api。
您使用哪种构建工具? Maven 或 Ant,或者您是否在 Eclipse 本身中进行打包,而不使用外部工具?
要解决该问题,您需要确保 Java EE api jar 包含在可执行 jar 中。
关于java - 如何将包含 Java 库的 IBM 类的 Eclipse 项目导出到可执行 JAR 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12226085/