2015-06-21 99 views
3

当我尝试运行我的jar文件时,出现奇怪的行为。我可以运行并从netbeans执行我的Java应用程序没有任何问题。但是当我试图从终端运行jar文件时,我在某些java类中遇到了NoClassDefFoundError异常。java:NoClassDefFoundError当从终端运行但不是从netbeans运行时

堆栈跟踪:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: Could not initialize class java.nio.file.TempFileHelper 
at java.nio.file.Files.createTempFile(Files.java:805) 
at sun.font.FcFontConfiguration.writeFcInfo(FcFontConfiguration.java:391) 
at sun.font.FcFontConfiguration.init(FcFontConfiguration.java:100) 
at sun.font.FcFontConfiguration.<init>(FcFontConfiguration.java:75) 
at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:747) 
at sun.font.SunFontManager$2.run(SunFontManager.java:431) 
at java.security.AccessController.doPrivileged(Native Method) 
at sun.font.SunFontManager.<init>(SunFontManager.java:376) 
at sun.awt.X11FontManager.<init>(X11FontManager.java:32) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorIm 

传递他详细论证到Java,我可以看到java.nio.file.TempFileHelper加载。

进出口运行我的应用程序在Linux(Fedora的20)

摘录:[Loaded java.nio.file.TempFileHelper from /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79-2.5.5.0.fc20.x86_64/jre/lib/rt.jar]

详细日志:http://pastebin.com/ekuQfkgG

我能做些什么?

编辑: 使用interpeter使用的编译应用程序相同的Java运行我的应用程序的工作原理:

/usr/java/jdk1.7.0_60/jre/bin/java -jar InstaladoruraClientes/Cliente.jar 
+0

什么Java版本是在NetBeans和终端使用?你可以粘贴你正在做的完整的'javac'调用吗? –

+0

我使用NetBeans构建我的应用程序,并且netbeans使用jdk7 – moscoquera

+0

您应该在生成的jar中检查您的清单文件。它包含用'-jar'选项执行的类路径。类路径看起来像从应用程序中看到什么('java.class.path'系统属性或类似的东西) – Matthieu

回答

0

你可能已经忘记了JAVA_HOME为你的环境变量与../bin路径

的路径
0

我建议安装oracle jdk后面的this guide

为每个新版本使容易,解压后,创建一个类似的软链接:

ln -s jdk1.8.0_45 jdk 

,并在引导“jdk1.8.0_45”与“JDK”在每一种情况更换。通过这种方式,每次需要更新到新版本时,您只需要下载并更新链接到jdk。

// ofcourse从例如替换jdk18.0_45上面那个版本你有

相关问题