linux下java unrecognized class file version错误的解决

时间:2021-09-05 06:28:55

linux下java unrecognized class file version错误的解决

 环境:RedHat Linux Enterprise 5.4

 问题:java.sun.com下载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