只有在运行导出的jar时,Java程序才能正常运行
我有一个Java程序(使用JavaSE-1.6) 当我在eclipse中执行程序时,没有问题,我得到以下结果: 但当我将其导出到一个可执行jar并运行它时,我会得到以下结果: 有没有人经历过这样的事情只有在运行导出的jar时,Java程序才能正常运行,java,eclipse,executable-jar,Java,Eclipse,Executable Jar,我有一个Java程序(使用JavaSE-1.6) 当我在eclipse中执行程序时,没有问题,我得到以下结果: 但当我将其导出到一个可执行jar并运行它时,我会得到以下结果: 有没有人经历过这样的事情 Exception in thread "main" java.lang.NoSuchMethodError at org.eclipse.jdt.internal.jarinjarloader.RsrcURLConnection.getInputStr eam(Rsr
Exception in thread "main" java.lang.NoSuchMethodError
at org.eclipse.jdt.internal.jarinjarloader.RsrcURLConnection.getInputStr
eam(RsrcURLConnection.java:43)
at java.net.URL.openStream(Unknown Source)
at sun.misc.URLClassPath$Loader.getResource(Unknown Source)
at sun.misc.URLClassPath.getResource(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)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:56)
我鼓励您仔细阅读本页,它只是关于jar文件的一个非常基本的信息: jar文件并没有什么特别之处,实际上它只是一个归档文件,比如*.zip或*.rar。实际上,
java
bin所做的只是基于内部元数据处理jar文件,然后在内部运行类
可以执行以下几项调试操作:
java-jar yourjarfile.jar
这种行为最常见的原因是,在类路径上有相同JAR的两个不同版本 根据您启动应用程序的方式,一个或另一个优先,并对另一个进行阴影处理
如果您使用Maven,那么它就是为您准备的。它是否执行了正确类的正确main方法?请尝试使用java-jar运行并向我们发送stacktrace(如果有):)可能是关于eclipse没有导出资源或无法使用所选外观运行。可能是外部库缺少类路径可能是程序中使用了其他JAR(在eclipse中)在打包项目后,这些jar现在不可用。@Adarsh我的程序中没有使用任何其他jar这是一个非常简单和简短的程序我从java中添加了一个堆栈跟踪-jar在我的问题中,你能看一下吗?它看起来像是Eclipse和从shell运行它时使用的java之间的java不匹配版本。发生的情况是,您在shell中使用的java还没有在以下位置调用的方法:(RsrcURLConnection.java:43)那么我如何解决这个问题呢?您应该在编译类时检查Eclipse使用的java版本是什么。您可以在Eclipse属性->java运行时中检查此选项。然后,通过设置指向较新版本java的路径,您应该使用相同(或较新版本)运行jar文件。我在选择时将其设置为java 6(它有(完美匹配)),但我仍然得到错误