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

本文详细介绍了在Windows 10系统中安装JDK后遇到的couldnotopenXXXjvm.cfg错误,并给出了具体的解决方案。通过对环境变量顺序的调整,解决了java命令无法正常运行的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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的位置没有要求。
欢迎有疑问或者不同意见的交流探讨。

评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值