
java编译中出现了Exception in thread “main" java.lang.UnsupportedClassVersionError
这是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行产生的错误。
在安装jdk时候,jre不要装同一目录,否则覆盖了之后javac.exe就没了,环境变量%JAVA_HOME%结尾不要加分号,不然其他相关引用后面就多了分号。
解决方式:
你的编译器是eclipse的话,那么需要在项目的属性里设置jdk版本,方法是右击项目-->properties-->java compiler --> Enable project specific settings -->将compiler compliance level设置为1.7,也就是与jvm一致的版本(在命令行中java -version所显示的版本)。
扩展资料:
JAVA编译器(javac.exe)的作用是将java源程序编译成中间代码字节码文件,是最基本的开发工具。
编译时首先读入java源程序(即在MS-DOS命令行下键入javac HelloWorld.java等文件名参数和其他选项参数),然后进行语法检查,如果出现问题就终止编译。语法检查通过后,生成中间代码即字节码,字节码文件名和源文件名相同,扩展名为.class。
Java以跨平台、面向对象、多线程、兼具编译型语言和解释型语言、稳定性好、安全性强的特点,以及与Internet的完美结合而取得成功。
参考资料:java编译器-百度百科
2013-09-24
因为,高版本的JDK生成的class文件使用的格式,可能与低版本的JDK的.class文件格式不同。这样,低版本的JVM无法解释执行这个.class文件,会抛出java.lang.UnsupportedClassVersionError不支持的Class版本错误。
这个错误尤其在JDK5与JDK5之前的版本上表现明显。因为,JDK5在Java语法上作了不少增强,引入了一些新的.class文件的元素,导致旧版本的JVM无法解释、执行.class文件。即使这个类并没有使用任何JDK5的新元素,但是JDK5生成的.class文件,JDK1.4及其以前的JVM都无法辨认!本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/cyhgohappy/archive/2008/10/13/3069799.aspx
Exception in thread "main" java.lang.Unsupported.lassVersionError: M : Unsupported major.minor version 51.0.
java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: M. Program will exit.
javac 和 java版本不一致的问题,在Linux下, 执行 java -version 和 javac -version可以查看它们的版本信息。
通过比较,找出是java还是javac的版本不一致, 然后在命令行下执行 sudo update-alternatives --config java/javac, 选择列表中相对应的版本进行手动更新。
2013-09-24