java:从终端运行而不是从netbeans运行时的NoClassDefFoundError

时间:2015-06-21 06:20:00

标签: java linux netbeans terminal

当我尝试运行我的jar文件时,我看到了奇怪的行为。我可以毫无问题地从netbeans运行并执行我的java应用程序。但是当我尝试从终端运行jar文件时,我在某些java类中遇到NoClassDefFoundError异常。

堆栈跟踪:

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

我该怎么办?

编辑: 使用用于编译应用程序的相同java interpeter运行我的应用程序:

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

2 个答案:

答案 0 :(得分:0)

您可能忘记了JAVA_HOME作为您的环境变量与../bin路径的路径

答案 1 :(得分:0)

我建议在this guide之后安装oracle jdk。

为了方便每个新版本,在解压后,创建一个软链接,如:

ln -s jdk1.8.0_45 jdk

并在指南中的每次出现中用“jdk”替换“jdk1.8.0_45”。通过这种方式,每次您需要更新到新版本时,您只需要下载它并更新到jdk的链接。

// ofcourse从上面的示例中替换jdk18.0_45与您拥有的那个版本