windows如何解決Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'


問題再現與解讀

  • 首次,使用 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 來查看
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 的版本保持一致!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM