日期:2014-05-16  浏览次数:20694 次

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

问题:java.sun.com下载jdk1.60和jre1.60的bin文件,sh ./某某某.bin安装之后,编译HelloWorld.java,生成HelloWorld.class文件,但是java HelloWorld却不能执行。出现如下错误:

[root@Mr javaPC]# javac HelloWorld.java


[root@Mr javaPC]# ls
HelloWorld.class HelloWorld.java 计算器.java 计算器.java~
[root@Mr javaPC]# 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@Mr javaPC]#
初步解决方法和分析:

在执行的时候打入完整路径。如下:

[root@Mr javaPC]# /usr/java/jre1.6.0/bin/java HelloWorld
Hello World!
[root@Mr javaPC]#

可见,PATH出了点小问题。

其实 查一下java版本就晓得问题出在哪里了。

[root@Mr javaPC]# 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@Mr javaPC]#
这里,version是 ”1.4.2“,而咱们装的是1.6.0,所以有 (unrecognized class file version)一说。
解决方法:

知道根源,就好解决咯。如何把1.4的叉叉了如何修改环境变量PATH等等等等。

网上一大坨修改/etc/profile 然后source的,而老师也讲了修改root下的某个文件(ThizLinuxinux里)。不过我还是打完整路径了。怕怕啊。