You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows环境下Java环境变量配置后指定路径未生效问题:原因排查与解决方案

问题原因与解决方案

问题根源

这事儿其实很好解释——系统在查找java.exe时,优先找到了PATH里位置更靠前的Oracle Java版本

从你给出的信息就能一眼看出问题所在:

  • 执行where java的输出里,第一个结果是C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe,这是Oracle Java的执行文件
  • 你的PATH变量里,这个Oracle的javapath路径排在M:\java\java-se-8u41-ri\bin前面

Windows执行命令时,会严格按照PATH里的路径顺序从前往后查找对应的可执行文件,所以自然就先调用了Oracle的Java,而不是你指定的OpenJDK。至于你设置的JAVA_HOME,它主要是给Maven、Tomcat这类依赖Java的工具用的,直接执行java命令时并不直接依赖它。

解决步骤

方法1:调整PATH路径顺序(推荐)

这是最稳妥的方式,既能保留Oracle Java(如果之后需要的话),又能让系统优先用你指定的OpenJDK:

  • 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量
  • 在「用户变量」或「系统变量」里找到PATH,点击「编辑」
  • 找到M:\java\java-se-8u41-ri\bin这一项,把它剪切粘贴到PATH列表的最顶部
  • 点击所有「确定」保存设置,然后关闭所有已打开的命令提示符窗口,重新打开一个新的(旧窗口不会自动加载新的PATH配置)

方法2:移除Oracle Java的PATH条目(如果你不需要它了)

如果确定以后不用Oracle Java了,可以直接删掉那个优先级高的路径:

  • 同样打开环境变量设置,找到PATH里的C:\Program Files (x86)\Common Files\Oracle\Java\javapath
  • 删除这一项,保存设置后重启命令提示符

验证结果

重新打开cmd后,依次执行以下命令确认:

  1. where java:第一个结果应该是M:\java\java-se-8u41-ri\bin\java.exe
  2. java -version:此时应该输出你预期的OpenJDK 8u41版本信息

内容的提问来源于stack exchange,提问作者Akash Jain

火山引擎 最新活动