[英]Windows ignores JAVA_HOME: how to set JDK as default?
如何說服 Windows 使用 JDK 而不是 JRE?
之前,這里和其他地方已經提出過這個問題:
問題是 Windows 忽略了JAVA_HOME
並且它也忽略了我將 JDK bin 目錄作為路徑中的第一個條目這一事實。
當我從命令行運行java -version
時,它不是調用我的 JDK 1.6 安裝,而是運行 1.7 JRE。
我的猜測是這是 1.7 特有的問題,而 Windows 7 正在做一些它不應該對注冊表進行的操作。
有想法該怎么解決這個嗎?
編輯:哎呀。 當我的意思是“路徑”時,我在上面寫了“類路徑中的第一個條目”。 對不起。
在 Windows 上,同一個java
可執行文件可以為不同版本的 Java 加載 DLL。 它查看運行它的目錄,看它是否包含特定 Java 版本的庫。 如果沒有,它會使用 Windows 注冊表來定位系統的默認 Java 版本。
Java 安裝程序會將java.exe
的副本(但沒有庫)放在Windows\system32 C:\Program Files (x86)\Common Files\Oracle\Java\javapath
目錄中,並將該目錄添加到PATH
變量。
如果不使用完整路徑,則使用PATH
系統變量找到要運行的java.exe
副本。 由於此目錄不包含特定 Java 運行時版本的 DLL,因此可以通過查看注冊表找到一個。
因此,您要么需要修改注冊表,要么將javapath
條目替換為PATH
系統(而非用戶)變量中所需的 Java 版本。
在 Windows 8 中,您可能需要刪除C:\ProgramData\Oracle\Java\javapath
目錄。
從路徑
它解決了我的問題。
我也有這個問題。 我正在運行 1.6,但想構建我正在使用 1.5 處理的代碼。 我已更改JAVA_HOME
和PATH
(用戶和系統)無濟於事。
答案是 1.6 的安裝程序將java.exe
、 javaw.exe
和javaws.exe
放入了我的Windows\System32
文件夾(Windows 7)。
我通過將這些文件重命名為java_wrong.exe
、 javaw_wrong.exe
和javaws_wrong.exe
解決了這個問題。 只有在這樣做之后,它才會選擇JAVA_HOME
和PATH
中定義的正確 java 版本。 因此,我重命名了這些文件,因為這以一種易於恢復的方式刪除了它們。
希望這可以幫助!
Windows 不會忽略任何東西。 這是您的設置問題; Windows 只使用您提供的內容。 它沒有JAVA_HOME
的特殊知識。
CLASSPATH
也與 Windows 無關。 對於 Windows,它只是一個擴展到文件夾位置的環境變量。
檢查您的%PATH%
環境變量。 這就是讓 Windows 先於其他找到的原因。 路徑(如您鏈接到的帖子所說)應指向%JAVA_HOME%\bin;<remainder of path>
。 同樣,您鏈接到的帖子為您提供了一種使用批處理文件進行設置的方法。
(對於可能不知道這一點的其他人:檢查 %PATH% 的最簡單方法是打開命令提示符並鍵入echo %PATH%
。您也可以通過右鍵單擊“開始”菜單右側窗格中的Computer
來到達那里並選擇Properties
,然后選擇Advanced System Settings
和 tne Environmental Variables
按鈕。)
我遇到過同樣的問題。 我安裝了一堆 Java 版本,出於某種原因,使用的是 Java 1.7 而不是 Java 1.6,即使我在路徑中指定了使用 1.6 (C:\jdk1.6.0_45_32\bin)。
我必須將要使用的 JDK 的路徑 (1.6) 移動為 PATH 環境變量中的第一個條目,以確保 Windows 使用 1.6 而不是 1.7。
因此,例如,之前的 PATH 環境變量是:
C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin;C:\jdk1.6.0_45_32\bin
在我將 jdk 移到第一位之后,它起作用了:
C:\jdk1.6.0_45_32\bin;C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin
我猜 Java 1.7 的 Windows 安裝程序將它安裝到 PATH 中已經存在的其他目錄中,因此首先使用它而不是指定的自定義 PATH 條目 C:\jdk1.6.0_45_32\bin;
對於我在'Path'
變量中的案例,添加了一個參數,例如“ C:\ProgramData\Oracle\Java\javapath;
'。 這個位置有來自 java 8 的java.exe
、 javaw.exe
和javaws.exe
,它們是通過 Oracle 的jdk.exe
新安裝的。
我已從路徑中刪除了此文本,其中我的路徑已經具有%JAVA_HOME%\bin
。
現在,變量'JAVA_HOME'
正在控制我想要的 Java 版本。
我安裝了 Java 7 和 8,我想重定向到 java 7,但我的 cmd 提示窗口中的 java 版本顯示 Java 8。
最后將 Java 7 bin 目錄路徑( C:\Program Files\Java\jdk1.7.0_10\bin )添加到 PATH 變量中,但沒有成功並顯示 Java 8。所以我將 Java 7 路徑更改為開頭路徑值,它起作用了。
打開一個新的 cmd 提示窗口並檢查我的 java 版本,現在它顯示 Java 7
將 Path 環境變量設置為所需的 jdk/bin 目錄
在我的情況下,我安裝了 Java 7 和 8(均為 x64),我想重定向到 java 7,但一切都設置為使用 Java 8。Java 使用 PATH 環境變量:
C:\ProgramData\Oracle\Java\javapath
作為查找其文件夾運行時的第一個選項(是一個隱藏文件夾)。 此路徑包含 3 個無法編輯的符號鏈接。
在我的電腦中,PATH 環境變量如下所示:
C:\ProgramData\Oracle\Java\javapath;C:\Windows\System32;C:\Program Files\Java\jdk1.7.0_21\bin;
就我而言,它應該如下所示:
C:\Windows\System32;C:\Program Files\Java\jdk1.7.0_21\bin;
我不得不將符號鏈接剪切並粘貼到其他地方,因此 java 找不到它們,我可以稍后恢復它們。
在將 JAVA_HOME 和 JRE_HOME 環境變量設置為所需的 java 文件夾的運行時(在我的情況下是 Java 7)之后,命令java -version
應該顯示您所需的 java 運行時。 我說沒有必要弄亂注冊表。
在 Win7 x64 上測試。
此問題可能是因為您的系統中安裝了較早版本的 Java。 首先仔細檢查您的環境變量並刪除與以前版本的JAVA相關的所有環境變量並將這些路徑替換為
C:\Program Files\Java\<your new jdk version>\bin
這里還有一個額外的因素; 除了 java 安裝程序放置在您要求放置它們的任何位置的 java 可執行文件之外,在 windows 上,java 安裝程序還將其中一些可執行文件的副本放在您的 windows system32 目錄中,因此您可能會使用每個 java 可執行文件是最近安裝的。
以防萬一您將 .BAT 文件用作 Windows 服務,我建議您卸載 Windows 服務並在更改 %JAVA_HOME% 以指向正確的 Java 版本后重新安裝它。
在為這個問題苦苦掙扎並研究了一段時間后,我終於設法按照以下步驟解決了它:
1)安裝jdk版本12
2)在系統變量中創建新變量
3)命名為JAVA_HOME並給出jdk安裝路徑
4)在路徑中添加這個變量並將其移動到頂部。
5) 進入C:\Program Files (86)\Common Files\Oracle\Java\javapath,將java.exe和javaw.exe替換為pathtojavajdk/bin文件夾下對應的同名文件
最后,我用“java -version”檢查了cmd中java的默認版本,它工作了!
我遇到了同樣的問題,在用戶環境變量設置中,我正確配置了 JAVA_HOME 和 PATH 但它不起作用。 當我更新我的系統環境變量時,它開始工作。
我面臨着同樣的問題。 我有一個 8.11 的 java 版本。 我的路徑中有這兩個: C:\Program Files\Java\jdk1.8.0_51\bin
和C:\ProgramData\Oracle\Java\javapath
我所做的是我像這樣將jdk更改為%JAVA_HOME%\bin
並將javapath的目錄( C:\ProgramData\Oracle\Java\javapath
) javapath
為javapath1
,它解決了我的問題。
從系統變量中的路徑中刪除 C:\ProgramData\Oracle\Java\javapath 並為用戶變量添加自定義值 JAVA_HOME 變量。 這將在 Windows 10 中運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.