win10安装jdk出现could not open 'D:\software\JAVA\lib\amd64\jvm.cfg'

在win10下安装jdk后,命令行测试java出现could not open XXX\jvm.cfg

因为用matlab打包jar包需要,就按照教程安装了个jdk,但出现这个问题还是一脸懵。我安装的是1.7版本的,最开始是装的1.7.0_13,出现问题后我以为是太陈旧了,就卸载掉重新安装1.7.0_79。但还是出现了同样的问题。我报错前的环境变量时这样的:
这里写图片描述

画框的那两个就是我安装后新增的。
此时命令行javac没有报错,但是java会报错:

这里写图片描述

通过数次摸索,最后找到原因,是环境变量的顺序问题,把新增的两个jdk和jre放在环境变量的最前面,问题马上解决:
这里写图片描述

切记,环境变量修改后重新测试时一定要关闭命令再重新打开才生效
这里写图片描述

此时问题已解决。

那到底是什么原因呢?
其实,软件运行时环境变量的查找是先在当前路径找,找不到后再在系统环境变量中查找,同时系统环境变量的查找是按照文件的顺序从前向后找的,最前面一条的优先级最高,如果找到了就不会再向后找。
对于java来说,jdk(java development kit)是开发工具包,jre(java runtime environment)是运行环境。java命令的运行是肯定需要java环境的,也就是jre。与jre的bin目录最明显的区别就是jdk下才有javac,因为 jre只是一个运行环境而已,与开发无关。正因为如此,具备开发功能的jdk有自己的jre,同时这个jdk的命令位置是不会自动设置的,需要手动添加,然后它就会找到我们自己设置的位置jdk\bin,故javac一直都没有报错。而jre在安装的过程中会自动添加PATH,此时的path是在C:/windows/system32目录下,也就是下面的红框:
这里写图片描述
我们看到他是在最前面,所以当运行java时,他就会直接找到这个环境变量,不会再往下找我们设置的jre\bin了。所以java命令会出现错误。
为了验证以上猜想,我重新调整环境变量的位置,只把jre\bin放在SystemRoot\system32的前面,而把jdk\bin放在systemRoot\system32的后面,如图:
这里写图片描述
设置好后,重新打开命令行测试,测试java和javac都是没有问题的:
这里写图片描述
综上,jre在安装时会自动把命令的位置放在system32中,所以在环境变量中jre\bin一定要放在system32的前面,而jdk\bin的位置没有要求。
欢迎有疑问或者不同意见的交流探讨。

  • 96
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 52
    评论
http://www.cnblogs.com/zengkefu/p/5633342.html OpenJDK和Sun/OracleJDK 区别 与联系 首先要先明确之间,以及OpenJDK 6、OpenJDK 7、OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JDK版本和源码分支。 从前面介绍的Java发展史中我们了解到OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。但如果仅从“开源”字面意义(开放可阅读的源码)上看,其实Sun自JDK 1.5之后就开始以Java Research License(JRL)的形式公布过Java源码,主要用于研究人员阅读(JRL许可证的开放源码至JDK 1.6 Update 23为止)。把这些JRL许可证形式的Sun/OracleJDK源码和对应版本的OpenJDK源码进行比较,发现除了文件头的版权注释之外,其余代码基本上都是相同的,只有字体渲染部分存在一点差异,Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能,例如从JRockit移植改造而来的Java Flight Recorder。预计以后JRockit的MissionControl移植到HotSpot之后,也会以Oracle JDK专有、闭源的形式提供。 Oracle的项目发布经理Joe Darcy在OSCON 2011上对两者关系的介绍也证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码(如下图,注意图中提示了两者共同代码的占比要远高于图形上看到的比例),所以我们编译的OpenJDK,基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的。
Error: could not open `D:\JAVA\lib\amd64\jvm.cfg'错误是在安装JDK出现的问题。这个错误提示说明无法打开`D:\JAVA\lib\amd64\jvm.cfg'文件。有三种可能的解决方法可以尝试解决这个问题。首先,可以检查JDK安装路径是否正确,确保`D:\JAVA`文件夹中存在`lib\amd64\jvm.cfg'文件。如果文件不存在,可以尝试重新安装JDK并确保路径正确。其次,可以尝试进入C:\Program Files (x86)\Common Files\Oracle\Java\javapath目录下,删除java.exe,javaw.exe,javaws.exe三个文件,然后重新运行JDK。最后,如果以上方法都不起作用,可以尝试在安装JDK时选择一个不同的安装路径。这些方法应该能够解决Error: could not open `D:\JAVA\lib\amd64\jvm.cfg'错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Error: could not open `D:\JDK\j\lib\amd64\jvm.cfg](https://blog.csdn.net/weixin_47958232/article/details/127889074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [could not open `D:\java\lib\amd64\jvm.cfg'解决方法](https://blog.csdn.net/qq_39986274/article/details/79261183)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值