java could not open `C|D|E|F:\jre\lib\amd64\jvm.cfg' 解决方案与原因
因为安装了 jdk 后发现有多个 jre 一个是安装目录下的。

还有一个是安装后的自动安装的注意路径都不一样。

由于本人有强迫症所有不能容忍有两个 jre 目录的存在,所以果断删除了 D 盘下的。谨慎起见所以立马执行了 cmd java 命令,然后就凉凉,果断报错!

但是 javac 命令缺没有报错。

为什么会出现这个错误呢,我们安装 jdk 后已经配置了 path 变量啊。删除的 jre 也不是配置环境变量的路径啊。环境变量如下
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;D:\git\cmd;D:\jdk\bin;D:\apache-maven-3.6.1\bin
明明配置的 D:\jdk\bin; 下面我们先说解决方法。只需要把我们配置的 D:\jdk\bin; 环境变量放在最左边在执行 java 即可。
注意:配置完环境变量一定要关闭 CMD 命令再重新打开才生效!
下面我们来执行结果是没问题的且当前我们 D 盘下是没有 jre 目录的。

问题解决了?但是为什么会这样呢?首先我们把环境还原到报错环境。
1.我们到底执行的是哪个 java.exe?我们先来 windows 全局搜索下到底有多少个 java.exe 文件。

居然出现了这么多个!那么我们在命令行里输入的 java 命令到底是执行的哪个?
其实,软件运行时环境变量的查找是先在当前路径找,找不到后再在系统环境变量中查找,同时系统环境变量的查找是按照文件的顺序从前向后找的,最前面一条的优先级最高,如果找到了就不会再向后找。 那么我们再看下刚才我们的环境变量配置:
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;D:\git\cmd;D:\jdk\bin;D:\apache-maven-3.6.1\bin
最左边的是 C:\Program Files (x86)\Common Files\Oracle\Java\javapath 这个目录正好对应我们搜索出来的第一个 java.exe。而我们自己安装的 jdk 确是在倒数第二个,根本没有被执行。所以要解决问题我们需要把自己的 jdk 路径配置在最左边即可。
我们知道了执行 java.exe 了那么它是怎么寻找到要执行哪个 jre 呢?
当我们在命令行输入 java 时。 java.exe 的工作就是找到合适的 jre 来执行是按如下顺序来寻找的
- 首先看自己当前目录下有没有 jre 目录。
- 看父目录下面有没有 jre 目录。
- 查询注册表中有没有 jre 目录(HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\)


上面两个我都看了并没有当前目录和父目录下都不存在那么我们就来验证下第三个,打开注册表果然被找到了隐藏的太深了。

这个路径不就是被我删除的 jre 目录吗!顺带我们也发现了 jvm 原来 jvm 虚拟机就是一个 jvm.dll 文件。
好了到此所有谜团都已经解开了,原来安装一个 jdk 还有这么多小细节! 此次问题到此结束!欢迎有疑问或者不同意见的交流探讨。
java could not open `C|D|E|F:\jre\lib\amd64\jvm.cfg' 解决方案与原因的更多相关文章
- jdk1.7安装,cmd下 java -version出现错误:“could not open `D:\Java\jre7\lib\amd64\jvm.cfg”
cmd 下java -version出现错误:“could not open `D:\Java\jre7\lib\amd64\jvm.cfg”,出现这种错误可能是由于先前有安装老版本jdk,之后将新版 ...
- 【Java】移动JDK路径后,修改环境变量不生效 Error: could not open `C:\Program Files\Java\jre1.8.0_131\lib\amd64\jvm.cfg'
场景: JDK原先装在C盘的,现在移动到了D盘,并在环境变量修改了%JAVA_HOME%的新路径,但是CMD中输入java后依然报错. Error: could not open `C:\Progra ...
- Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg'
在运行cmd黑窗口时候出现:Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg'这样的错误的时候,本人没有删除任何文件,只是重新配置了一下jdk ...
- 更换JDK版本时的问题:Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg'
1.先把oracle自带的weblogic给卸载了,然后打开eclipse,发现报错了:Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg' J ...
- 解决 :java -version出现错误:“could not open `C:\Program Files\Java\jre7\lib\amd64\jvm.cfg”
cmd 下java -version出现错误:“could not open `C:\Program Files\Java\jre7\lib\amd64\jvm.cfg”,出现这种错误可能是由于先前有 ...
- win10下JDK安装,配置环境变量后报Error: could not open `C:\Program Files\Java\jre1.8.0_112\lib\amd64\jvm.cfg'
把Path里面的%JAVA_HOME%/bin放在最前面.
- 解决 Error: could not open `C:\Program Files\Java\jre7\lib\i386\jvm.cfg'
解决 Error: could not open `C:\Program Files\Java\jre7\lib\i386\jvm.cfg' 重装JDK后,因为没有装在以前的目录,运行java命令后报 ...
- Error: could not open `C:\Java\jre7\lib\i386\jvm.cfg
打开eclipse时出现Error: could not open `C:\Program Files\Java\jre7\lib\i586\jvm.cfg’) 删除 c:\windows\syste ...
- Error: could not open `C:\Program Files\Java\jre6\lib\i386\jvm.cfg')
前些日子装了个jdk7试了试,后来做项目需要换成jdk6,安装完jdk6,设置完环境变量后出现问题.运行java -version出现Error: could not open `C:\Program ...
随机推荐
- EXCEL2016 OLE/COM开发-常用功能封装代码
hpp #pragma once #include "stdafx.h" #include "CApplication.h" #include "CW ...
- docker核心技术(2)
鸟瞰容器生态系统 一谈到容器,大家都会想到 Docker. Docker 现在几乎是容器的代名词.确实,是 Docker 将容器技术发扬光大.同时,大家也需要知道围绕 Docker 还有一个生态系统. ...
- (15)centos7 系统服务
centos7 服务启动脚本在 /usr/lib/systemd目录下 1.服务基本操作指令 systemclt [command] [unit] #其中command包括: #start 立即启动 ...
- Access数据库中自动编号字段重置为1
在清空一张ACESS数据库表后,在重添加数据之前,希望此表的自动编号能从1开始,怎么办呢? 下面的方法告诉我们,除了通过转存数据库表的方法外,还有几种更简单的方法: 方法一(前提:数据库表可带内容进行 ...
- 10、TestNG 的 FixTrue用法一
Fixture 是指一个测试运行所需的固定环境,通俗来说 ,为测试用例所准备的环境. 以下是TestNG中可用的注释及其属性的简要概述. 我们先演示@BeforeClass.@AfterClass.@ ...
- python软件开发规范&分文件对于后期代码的高效管理
根据本人的学习,按照理解整理和补充了python模块的相关知识,希望对于一些需要了解的python爱好者有帮助! 一.软件开发规范--分文件 当代码存在一个py文件中时: 1.不便于管理 (修改,增加 ...
- jmeter 查看结果树之查看响应的13种方法
查看结果树查看响应有哪几种方法,可通过左侧面板底部的下拉框选择 1 Text 查看结果树中请求的默认格式为Text,显示取样器结果.请求.响应数据3个部分内容. 取样器结果: 默认Raw展示,可以切换 ...
- pycharm的第一次使用(其实并不是第一次)
file --> settings --> editor -->general --> change font size file --> settings --> ...
- hdu6354 /// 线段树
题目大意: 给定n m x y z 长度为n的序列初始为0 接下来m个操作 l r v 将l r区间内比v小的数都变成v l r v由x y z和给定的函数生成 线段树维护区间 最大值 最小值 再加 ...
- Go学习笔记:初识Go语言
Go语言简介 Go语言是Google(谷歌)公司开发的一款静态型.编译型并自带垃圾回收机制和并发的编程语言. Go语言的风格类似于C语言.其语法在C语言的基础上进行了大幅的简化,去掉了不需要的表达式括 ...