• Java环境变量配置&解决版本不一致问题 (转)


    晚上琢磨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.lang.UnsupportedClassVersionError 错误的原因,是因为我们使用高版本的JDK编译的Java class文件试图在较低版本的JVM上运行,所报的错误。

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

    分别输入java -version 和javac -version

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

    解决方案1:

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

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

    解决结果:

    解决方案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

  • 相关阅读:
    第三次作业——for 语句及分支结构else-if
    第二次作业及总结——数据类型和运算符
    .net webapi 过滤器使用(异常日志)
    .net webapi 过滤器使用(记录访问日志)
    how to get state when push notification
    Qt项目下pro文件设置库路径
    配置安装oh-my-bash
    03、工具篇--Maven
    04、JavaEE--SSH整合
    01、JavaEE--Hibernate
  • 原文地址:https://www.cnblogs.com/luoyebojue/p/5248767.html
Copyright © 2020-2023  润新知