簡體   English   中英

Windows 忽略 JAVA_HOME:如何將 JDK 設置為默認值?

[英]Windows ignores JAVA_HOME: how to set JDK as default?

如何說服 Windows 使用 JDK 而不是 JRE?

之前,這里和其他地方已經提出過這個問題:

如何設置默認 Java 安裝/運行時 (Windows)?

問題是 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_HOMEPATH (用戶和系統)無濟於事。

答案是 1.6 的安裝程序將java.exejavaw.exejavaws.exe放入了我的Windows\System32文件夾(Windows 7)。

我通過將這些文件重命名為java_wrong.exejavaw_wrong.exejavaws_wrong.exe解決了這個問題。 只有在這樣做之后,它才會選擇JAVA_HOMEPATH中定義的正確 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;

在此處輸入圖像描述 假設您在 JDK 8 之后安裝了 JDK 10,並且在系統環境變量中設置了“C:\ProgramData\Oracle\Java\javapath”之類的路徑,然后通過該路徑進行 Java 版本控制。 它會忽略 JAVA_HOME 甚至 jdk 1.8 路徑設置在這里所以刪除路徑中的“C:\ProgramData\Oracle\Java\javapath”以獲得 JAVA_HOME 路徑的效果

對於我在'Path'變量中的案例,添加了一個參數,例如“ C:\ProgramData\Oracle\Java\javapath; '。 這個位置有來自 java 8 的java.exejavaw.exejavaws.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\binC:\ProgramData\Oracle\Java\javapath

我所做的是我像這樣將jdk更改為%JAVA_HOME%\bin並將javapath的目錄( C:\ProgramData\Oracle\Java\javapathjavapathjavapath1 ,它解決了我的問題。

從系統變量中的路徑中刪除 C:\ProgramData\Oracle\Java\javapath 並為用戶變量添加自定義值 JAVA_HOME 變量。 這將在 Windows 10 中運行。

通過聲明設置 PATH 變量來回應的人應該可以工作,然后請解釋一下:

在此處輸入圖像描述

您需要從 PATH 中刪除條目 C:\Program Files (x86)\Common Files\Oracle\Java\javapath 並確保在 PATH 和 JAVA_HOME 下定義了 %JAVA_HOME%\bin 條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM