• JAVA学习提高之----安装多个JDK版本的问题


    我的机器上最开始安装的是jdk1.6,后来因为工作需要又安装了jdk1.4。但是,环境变量我并未更改,还是指向jdk1.6的路径的。可是,在cmd窗口输入 Java -version 却得到是1.4.2。
    查询环境变量:

    1.我的电脑->属性->高级->环境变量

    2. 系统环境变量(HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment)
     
    当前用户环境变量(HKEY_CURRENT_USER/Environment)
    2个设置完全是一样,都是指向1.6。

    为了搞清楚问题的原因,通过查询相关的资料,原来是这样的:

    JDK在安装的过程当中将在注册表会生成如下3个项目:

    HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Development Kit
    HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Plug-in
    HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment
    同 时,JDK安装程序将会把java.exe,javaw.exe,javareg.exe这3个可执行文件拷贝 到%SystemRoot%/system32目录下,由于%SystemRoot%/system32被操作系统缺省的设置为最高优先权的PATH搜索 路径,因此可保证用户在命令行任何目录下可运行java.exe来启动JVM。

    查询HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment得知CurrentVersion=1.4。 于是我手动将它修改为1.6后,然后运行java -version得到以下结果:
    Registry key 'Software/JavaSoft/Java Runtime Environment/
    has value '1.6', but '1.4' is required.
    Error: could not find java.dll
    Error: could not find Java 2 Runtime Environment.

    所以,不能简单的修改注册表的CurrentVersion值来达到更改运行的JRE。若人为的修改CurrentVersion,会使得不同版本的java.exe加载与己版本不符的java.dll及 jvm.dll,将引起难以预料的后果!
    一 般地,当在系统中装了两套或多套版本的Java2 SDK,后面安装的Java2 SDK会将自己带的java.exe和javaw.exe拷贝到%SystemRoot%/system32目录下,从而覆盖先前版本的java.exe 和 javaw.exe,并且在注册表中改写CurrentVersion为后安装的版本。所以建议在安装Java2 SDK前,先卸载以前安装的版本。

     

    以下是在我在系统中安装多个版本JDK的体验:

           1、安装JDK1.5以上版本:这可以保证任何版本的ECLIPSE都可以安装(否则如果安装JDK为1.3而ECLIPSE为高版本的会提示JDK版本低,安装不了;有的如果先安装了高版本的JDK,但一段时间后卸载了高版本的JDK,那么电脑上只有低版本的JDK和高版本的ECLIPSE,则运行ECLIPSE时只会看到起动界面,而后消失)。

           2、安装ECLIPSE,在安装了高版本的JDK后,一般ECLIPSE安装没有问题

           3、视情况而定,看你要运行的程序是哪个JDK的(有的程序是之前开发的使用的JDK版本可能是1.3的),如我现在要运行JDK1.3下的程序,我会

           (1)从别的电脑上拷贝已安装好的JDK1.3文件夹

           (2)将PATH,CLASSPATH指该文件夹目录

           (3)ECLIPSE/WINDOW/PREFERENCES/JAVA/INSTALLED JRES/在里面添加并勾选JDK1.3,并勾除JDK1.5的。

           (4)将ECLIPSE/WINDOW/PREFERENCES/JAVA/COMPILER中的compliance设为1.3的版本即可。(如果选1.5可能会在命令环境编译正确,但eclipse报错:说java.lang.UnsupportedClassVersionError could not found main class),还有可能出错的就是在eclipse下默认包时编译正错,但使用自己创建的包时编译其中的类失败。

    其实可以直接将环境变量中path的配置:%java_home%in放到最前面,然后可以修改java_home的值切换不同的jdk。

    相关问题可以见:

    http://www.blogjava.NET/zhyiwww/archive/2007/01/16/94235.html

    http://blog.csdn.Net/ybyb14/archive/2007/05/09/1602230.asp

  • 相关阅读:
    (404) 未找到 获取StatusCode状态码
    通过UserAgent判断设备为Android、Ios、Pc访问
    Sql视图创建语句及修改视图
    301重定向
    md5加密篇(一)
    黑客编程教程(六)Windows的关机和重起
    黑客编程教程(五)多线程编程介绍
    黑客编程教程(四)关于服务器和客户端编程
    黑客编程教程(三)Windows 网络协议
    黑客编程教程(二)Win API编程简介
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/6025817.html
Copyright © 2020-2023  润新知