问题再现与解读

  • 首次,使用 java 命令+任意参数 都会报这个错误,最典型的就是java -version
  • 解读一下这个报错信息,注册表路径 Software\JavaSoft\Java Runtime Environment\CurrentVersion 当前值是 1.8,但是 java 命令版本是 1.7

问题解决

方式一:删除C:\Windows\System32下的java.exe, javaw.exe, javaws.exe

方式二:修改环境变量顺序

这是我原本的 Path 环境变量配置:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%\bin;

修改后把%JAVA_HOME%\bin提前到%SystemRoot%\system32;之前

%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;

问题分析过程

环境变量

Windows 中的 DOS 操作系统中的 Path 环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到 Path 中指定的路径去找。

java 命令,其实是由系统根据 Path 环境变量路径寻找 java.exe 程序来运行。

CMD - where 命令

描述:显示符合搜索模式的文件位置。在默认情况下,搜索是在当前目录和 PATH 环境变量指定的路径中执行的。

我们可以运行 where java 来查看



我的 java 1.8 安装在 D:\lib\jdk1.8\, 但是 %SystemRoot%\system32(即对应C:\Windows\System32) 优先于 %JAVA_HOME%\bin(即对应 D:\lib\jdk1.8\bin)匹配,所以找到了 C:\Windows\System32\java.exe, 但是这是java 1.7的运行程序。

运行 regedit 打开注册表

点击 开始 --> 运行... --> 输入 regedit, 回车 --> 打开注册表

找到 HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\, 就可以查看注册表属性了,我的 CurrentVersion 是 1.8

总结

  1. 使用 regedit 查看注册表中的 CurrentVersion
  2. 使用 where java 查看路径
  3. 让注册表中的 CurrentVersion 和 where 命令找到的第一个 java.exe 的版本保持一致!

windows如何解决Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'的更多相关文章

  1. java安装1.8的经验和Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVers问题处理

            java安装1.8后的问题:之前安装了jdk1.7和jdk1.6,之后又安装jdk1.8,然后执行java -version,输出的是1.8的,后来在注册表把jdk1.8改为1.7,然 ...

  2. java安装1.8和1.7,报错:Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVers

    进入:C:\ProgramData\Oracle\Java\javapath; 删除:java.exe.javaw.exe.javaws.exe 删除:path的C:\ProgramData\Orac ...

  3. Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion' has value '1.8', but '1.7'

    第一种方法:安装1.8之前安装了1.7,将1.7卸载就好了. 第二种方法:删掉Windows\System32下的java.exe, javaw.exe 就行了,但是安装的1.8的jdk会回到1.7的 ...

  4. 安装JDK出现问题 Error opening registry key'software\Javasoft\Java Runtime Environment'

    第一次安装JDK测试是否安装成功,打开cmd输入java -version 回车的时候出现如下错误: Error opening registry key'software\Javasoft\Java ...

  5. Error: Registry key 'Software\JavaSoft\Java Runtime has value '1.8', but '1.7' is

    cmd下输入 java命令时出现该错误: Error: Registry key 'Software\JavaSoft\Java Runtimehas value '1.8', but '1.7' i ...

  6. Error: opening registry key 'Software\JavaSoft\Java Runtime Environment' could not find java.dll

    Error: opening registry key 'Software\JavaSoft\Java Runtime Environment'Error: could not find java.d ...

  7. java command line error opening registry key 'Software\JavaSoft\Java Runtime Environment' java.dll

    C:\Users\huxxxxchan>javaError: opening registry key 'Software\JavaSoft\Java Runtime Environment'E ...

  8. 启动eclipse出现“Error opening registry key 'software\Javasoft\Java Runtime Environment'”

    启动eclipse出现“Error opening registry key 'software\Javasoft\Java Runtime Environment'”,“java was start ...

  9. java Error opening registry key 'Software\JavaSoft\Java Runtime Environment'安装jdk1.7遇到的问题

    最近开发项目要求jdk在1.7以上,我先卸载了jdk1.6,下载1.7下来安装好,配置下环境变量,可以是在输入java -version的时候发现: java Error opening regist ...

随机推荐

  1. python的一些基础知识

    一.函数介绍 二.模块与包 三.面向对象介绍 四.网络编程基础应用了解 五.基于MySQL对数据库的理解及基础操作 六.粗浅学习的前端知识整理

  2. 使用docker创建rabbitMQ容器

    1.拉去镜像 docker pull rabbitmq:3.7.7-management

  3. Python实用笔记 (22)面向对象编程——实例属性和类属性

    由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(se ...

  4. 112买卖股票的最佳时机II

    from typing import List# 这道题和上一题很类似,但有一些不同,每天都可以买入,或者卖出# 那么利润最大化,就是i + 1 天的价格比i天的价格高的时候买入# 然后在i + 1天 ...

  5. 放弃for循环吧

    前言 for(var i=0;i<array.length;i++){}这个可以是初学者必学的知识,也是JS中必不可少的功能,但如果对性能要求较高的小伙伴有了解过就会发现,for循环性能不高且代 ...

  6. [POJ3613] Cow Relays(Floyd+矩阵快速幂)

    解题报告 感觉这道题gyz大佬以前好像讲过一道差不多的?然鹅我这个蒟蒻发现矩阵快速幂已经全被我还给老师了...又恶补了一遍,真是恶臭啊. 题意 给定一个T(2 <= T <= 100)条边 ...

  7. [POJ3977] Subet(二分枚举)

    解题报告 前置知识:折半查找法(二分法) 顾名思义,折半就是把一组数据(有序)分成两半,判断我们要找的key值在哪一半当中,不断重复该操作直至找到目标key值,这玩意说白了就是二分的另一个名字. 解决 ...

  8. 切忌一步到位,谈谈DevOps实施落地

    2020年6月19日,由云计算开源产业联盟指导,高效运维社区和 DevOps 时代社区联合举办的GNSEC 2020线上峰会圆满举办.BoCloud博云参加了本次峰会并分享了博云帮助客户实施DevOp ...

  9. Flutter 1.17 新 Material motion 规范的预构建动画

    老孟导读:在 Flutter 1.17 发布大会上,Flutter 团队还发布了新的 Animations 软件包,该软件包提供了实现新的 Material motion 规范的预构建动画. 软件包 ...

  10. VSCode, 当今最流行的免费开源代码编辑器,微软出品,必属精品

    什么是VSCode? Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,并且可用于Windows,macOS和Linux.它内置了对JavaScript,T ...