zoukankan      html  css  js  c++  java
  • JDK版本不兼容问题之:一台机器安装多个版本的JDK

    我的机器上最开始安装的是jdk1.6,后来因为工作需要又安装了jdk1.4。但是,环境变量我并未更改,还是指向jdk1.6的路径的。 

    可是,在cmd窗口输入 java -version 却得到是1.4.2。 

    查询环境变量: 
    1.我的电脑->属性->高级->环境变量 
    2. 系统环境变量(HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment) 
      当前用户环境变量(HKEY_CURRENT_USEREnvironment)
     

    2个设置完全是一样,都是指向1.6。 

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

    JDK在安装的过程当中将在注册表会生成如下3个项目: 
    HKEY_LOCAL_MACHINESOFTWAREJavaSoftJava Development Kit 
    HKEY_LOCAL_MACHINESOFTWAREJavaSoftJava Plug-in 
    HKEY_LOCAL_MACHINESOFTWAREJavaSoftJava Runtime Environment 

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

    查询HKEY_LOCAL_MACHINESOFTWAREJavaSoftJava Runtime Environment得知CurrentVersion=1.4。 
    于是我手动将它修改为1.6后,然后运行java -version得到以下结果: 

    Registry key 'SoftwareJavaSoftJava 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前,先卸载以前安装的版本。 

  • 相关阅读:
    使用golang访问kubebernetes
    使用 Rancher 管理现有 Kubernetes 集群
    Running powershell scripts during nuget package installation and removal
    How to Create, Use, and Debug .NET application Crash Dumps in 2019
    寻找写代码感觉(一)之使用 Spring Boot 快速搭建项目
    Selenium+Java之解决org.openqa.selenium.InvalidArgumentException: invalid argument报错问题
    Selenium环境搭建
    关于Xpath定位方法知道这些基本够用
    Web自动化之浏览器启动
    【翻译】编写代码注释的最佳实践
  • 原文地址:https://www.cnblogs.com/ExMan/p/3798895.html
Copyright © 2011-2022 走看看