我尝试在Linux上的终端中运行.jar文件,但给出了一个错误:
[root@localhost dist]# java -jar helloworld.jar
Exception in thread "main" java.lang.ClassFormatError:
helloworld.Helloworld (unrecognized class file version)
at java.lang.VMClassLoader.defineClass(libgcj.so.7rh)
at java.lang.ClassLoader.defineClass(libgcj.so.7rh)
at java.security.SecureClassLoader.defineClass(libgcj.so.7rh)
at java.net.URLClassLoader.findClass(libgcj.so.7rh)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at gnu.java.lang.MainThread.run(libgcj.so.7rh).我已经检查了我的版本,它是:
[root@localhost /]# java --version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20080704 (Red Hat 4.1.2-51)是什么导致了这个错误?我如何修复它?
发布于 2012-01-26 15:34:59
尝试执行以下操作-
第一步:
sudo update-java-alternatives -l这是为了确保您正确安装了JDK6。它应该显示类似这样的内容-
java-6-sun 63 /usr/lib/jvm/java-6-sun第二步:
sudo update-java-alternatives -s java-6-sun这样,默认情况下将同时使用javac和java v6。
更新:
在您的终端上键入以下内容-
javac -version如果您将javac 1.6.0_10 or later作为输出,则必须执行以下步骤。如果你没有得到上面的输出,你将不得不卸载并重新安装java。
如果显示的版本是1.6.0_10或更高版本,应执行的步骤
在已完成的本地/ -s / /usr/local/jdk1.6.0_10
.bashrc文件中export JAVA_HOME=/usr/local/jdk1.6.0_10 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
发布于 2012-01-26 15:27:36
您必须使用比运行jar的版本更新的JDK/JRE进行编译。检查用于在Netbeans中编译项目的JDK版本,然后在控制台中使用以下命令检查JDK/JRE版本
java -version发布于 2012-01-26 15:28:12
错误是:“无法识别的类文件版本”。这意味着您试图启动由不兼容java版本构建的jar。
正如我所看到的,您实际上运行的是gcc java。尝试用原始的sun/oracle jre启动这个jar
https://stackoverflow.com/questions/9014992
复制相似问题