linux 下 java unrecognized class file version 错误的解决
环境:RedHat Linux Enterprise 5.4 问题:java.sun 下载 jdk1.60 和 jre1.60 的 bin 文件,sh ./某某某.bin 安装之后,编译 HelloWorld.java,生成 HelloWorld.class 文件,但是 java HelloWorld 却不能执行。出现如下 错误: [root@MrjavaPC]# javac HelloWorld.java [root@MrjavaPC]# ls HelloWorld.class HelloWorld.java 计算器.java 计算器.java~ [root@MrjavaPC]# java HelloWorld Exception in thread “main” java.lang.ClassFormatError: 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@MrjavaPC]# 初步解决方法和分析: 在执行的时候打入完整路径。如下: [root@MrjavaPC]# /usr/java/jre1.6.0/bin/java HelloWorld Hello World! [root@MrjavaPC]# 可见,PATH 出了点小
问题。 其实查一下 java 版本就晓得问题出在哪里了。 [root@MrjavaPC]# java -version java version “1.4.2″ gij (GNU libgcj) version 4.1.1 20061011 (Red Hat 4.1.1-30) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. [root@MrjavaPC]#
这个异常一般是因为你用的 JRE/JDK 的版本和代码编译时候不一致造成的, 一般 是 jre 的版本太低了。 这里,version 是”1.4.2“,而咱们装的是 1.6.0,所以有 (unrecognized class file version)一说。
解决的方法一: 在执行的时候打入完整路径。如下:[root@MrjavaPC]# /usr/java/jre1.6.0/bin/java HelloWorld Hello World! 解决的方法二: 在
linux 根路径下找到.bash_profile 文件,在文件中加入以下内容: export JAVA_HOME=/usr/jdk1.6.0_14 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib/rt.jar