我有一个Java程序(使用JavaSE-1.6)。
当我在eclipse中执行程序时没有问题,我得到以下内容:
但是当我将它导出到可执行jar并运行它时,我得到以下内容:
有没有人经历过这样的事情?
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)
答案 0 :(得分:1)
我鼓励您仔细阅读此页面,它只是关于jar文件的一个非常基本的信息: http://docs.oracle.com/javase/tutorial/deployment/jar/view.html
jar文件没什么特别之处,实际上它只是一个存档,比如* .zip或* .rar。 java
bin所做的实际上只是根据内部元数据处理jar文件,然后在里面运行类。
您可以执行一些调试:
java -jar yourjarfile.jar
答案 1 :(得分:0)
此行为的最常见原因是类路径上有两个不同版本的同一JAR。
根据您启动应用程序的方式,一个或另一个优先,另一个隐藏。
如果您使用Maven,则maven-duplicate-finder-plugin适合您。