如何将包含IBM Java库类的Eclipse项目导出到可执行JAR中

如何将包含IBM Java库类的Eclipse项目导出到可执行JAR中,java,eclipse,jar,websphere,noclassdeffounderror,Java,Eclipse,Jar,Websphere,Noclassdeffounderror,我正在尝试将Eclipse项目导出到JAR可执行文件。 这个项目包括一个带有两个IBM包的个人库com.IBM.mq.jar和com.IBM.mq.jmqi.jar 从Eclipserun按钮或通过project-bin文件夹中的javamainclass命令运行应用程序时没有错误 不幸的是,一旦创建了jar(文件>导出>可运行jar)并启动了java-jarmainclass.jar这就是结果: Exception in thread "main" java.lang.reflect.Invo

我正在尝试将
Eclipse
项目导出到
JAR
可执行文件。
这个项目包括一个带有两个IBM包的个人库
com.IBM.mq.jar
com.IBM.mq.jmqi.jar

Eclipse
run按钮或通过project-bin文件夹中的
javamainclass
命令运行应用程序时没有错误

不幸的是,一旦创建了jar(文件>导出>可运行jar)并启动了
java-jarmainclass.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
Eclipse
项目导出并运行到
Jar
文件(包括
ibmq类for Java
库)的正确方法是什么


更新1:不必要,但对于达成解决方案非常有用

通过集成Stuff建议:
从javaee安装中包含
javaee.jar
文件,以导入项目中包含的IBM类jar的所有依赖项



解决方案:尊重所有IBM类的Java依赖性


C:\…\IBM\webspheremq\java\lib中的
jar
文件导入自定义库ALL
Eclipse
导出为可运行jar(也不需要Fat jar插件)

您的Eclipse项目可能假设这个jar将在目标环境中可用/在要与应用程序打包的jar列表中没有javaeeapi

您正在使用哪个构建工具?Maven或Ant,或者您是否在不使用外部工具的情况下在Eclipse中进行打包


要解决此问题,您需要确保Java EE api jar包含在可执行jar中。

解决方案:尊重所有IBM类的Java依赖性

我发现非常有用的集成工具,建议从javaee安装中包含
javaee.jar
文件,以导入项目中包含的IBM类jar的所有依赖项。
这并不能解决错误,但他让我找到了解决方案:


C:\…\IBM\webspheremq\java\lib中的
jar
文件导入自定义库ALL
Eclipse
导出为可运行jar(也不需要Fat jar插件)

始终用于“ClassNotFoundException”,找出缺少的类属于何处。Eclipse可以在这里提供帮助。我的Eclipse是
版本:Juno发布版本id:20120614-1722
,Java是最后一个JDK 7。我的项目包括一个可以随JAR打包的个人库,而与项目一起自动设置的“标准”JRE系统库似乎不可能包含在内。你认为这是我的错误的原因吗?不,标准的JRE系统库不应该包括在内。您是否可以尝试将以下依赖项添加到您的包中:我已经将您的jar包含到我的库中,但它不起作用(请参阅我对主要问题的更新)。您认为我可以尝试使用一些启动应用程序的
java-Djava.library.path
-classpath
选项吗?显然,我发布的依赖项不能用于这样的可执行包。请阅读。您需要下载javaee并从下载的lib文件夹中获取javaee.jar。我想指出,对于不使用IBM Java库类的项目,运行导出的Jar没有问题。Jar文件或java启动器似乎无法在“eclipse之外”找到它们。希望这能有所帮助。
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