晚上琢磨ant的使用,需要用java javac编译文件,出现了如上问题。网上找了篇文章,再结合自己的情况改动了下,留着备份记录。

1.进行win8下Java环境变量配置,在”系统变量”下进行如下配置:

(1)新建->变量名:JAVA_HOME变量值:F:Program Files (x86)Javajdk1.7.0_67

(2)编辑->变量名:Path在变量值的后面加上:;%JAVA_HOME%in;

(3)新建->变量名:CLASSPATH变量值:):F:Program Files (x86)Javajdk1.7.0_67lib

注:jdk1.6以后的环境变量配置已经没有那么复杂了,不在需要配置.;的形式。 

问题:解决了问题1之后,对与HelloWord.java 输入javac HelloWorld之后出现 UnsupportedClassVersionError 错误:

Java环境变量配置&解决版本不一致问题 (转)-风君雪科技博客

这个很明显是一个版本不支持的问题,经过搜索发现问题所在:

出现java.lang.UnsupportedClassVersionError 错误的原因,是因为我们使用高版本的JDK编译的Java class文件试图在较低版本的JVM上运行,所报的错误。

因为,高版本的JDK生成的class文件使用的格式,可能与低版本的JDK的.class文件格式不同。这样,低版本的JVM无法解释执行这个.class文件,会抛出java.lang.UnsupportedClassVersionError不支持的Class版本错误。

分别输入java -version 和javac -version

Java环境变量配置&解决版本不一致问题 (转)-风君雪科技博客

我的编译环境是1.7的,而运行环境是1.6的,果然是这个问题。

解决方案1:

分析:可能是安装oracle数据库在配置jdk路径之前,导致运行命令调用了oracle自带的jdk,从而导致这个问题。

解决方案:把PATH变量末尾的;%JAVA_HOME%in挪到最前面,重启窗口。(dos启动时会加载环境变量)

解决结果:

Java环境变量配置&解决版本不一致问题 (转)-风君雪科技博客

解决方案2:

在注册表中修改:HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment 改为1.8

再次运行java -version

总结:

方案一和二本质上是一样的,需要保持一致。从这个问题建议大家把path中%JAVA_HOME%in给放到最前面,当然你的jdk版本得支持你后面需要安装的软件。

总结几个知识点吧~~

JDK、JRE有什么区别:

Jre   是java   runtime   environment的缩写,   是java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦, 还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以自己验证。至于在windows上的虚拟机是哪个文件呢?  Javajdk jreinclient里面是不是有一个jvm.dll呢?那就是虚拟机。

Jdk   是java   development   kit,是java的开发工具包,里面包含了各种类库和工具。当然也包括了另外一个Jre——–Javajre.  那么为什么要包括另外一个Jre呢?而且jdkjrein同时有client和server两个文件夹下都包含一个jvm.dll。   说明是有两个虚拟机的。

Javajdkin这个bin下有各种java程序需要用到的命令,与Javajdkjrein或者Javajrein的bin目录最明显的区别就是Javajdkin下才有javac.exe,这一点很好理解,因为 jre只是一个运行环境而已。与开发无关,正因为如此,具备开发功能的jdk自己的jre下才会同时有client性质的jvm和server性质的 jvm, 而仅仅作为运行环境的jre下只需要client性质的jvm.dll就够了。

我们用的java命令并不是 Javajdkin目录下的而是Javajdkjrein目录下的。不信可以做一个实验,大家可以把Javajdkin目录下的java.exe剪切到别的地方再运行 java程序,发现了什么?一切OK!

如果java为了提供给大多数人使用,他们是不需要jdk做开发的,只需要jre能让java程序跑起来就可以了,那么每个客户还需要手动去设置环境变量多麻烦啊?

所以安装jre的时候安装程序自动帮你把jre的java.exe添加到了系统变量中,因此去C:Windowssystem32下面去看看吧,发现有一个java.exe。

参考原文:http://www.cnblogs.com/betteryi/p/3790292.html