一臺機器多個版本的JDK共存
阿新 • • 發佈:2019-02-10
我的機器上最
開
始安裝的是
jdk1.6
,後來因
為
工作需要又安裝了
jdk1.4
。但是,
環
境
變
量我並未更改,
還
是指向
jdk1.6
的路徑的。
可是,在
cmd
視窗
輸
入
java -version
卻得到是
1.4.2
。
查詢環
境
變
量:
1.
我的
電腦
->
屬性
->
高
級
->
環
境
變
量
2.
系
統環
境
變
量
(HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session
Manager/Environment)
當前用
戶環
境
變
量
(HKEY_CURRENT_USER/Environment)
2
個
設
置完全是一
樣
,都是指向
1.6
。
為
了搞清楚
問題
的原因,通
過查詢
相
關
的
資
料,原來是
這樣
的:
JDK
在安裝的
過
程當中將在登錄檔會生成如下
3
個
項
目:
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Development Kit
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Plug-in
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment
Registry key 'Software/JavaSoft/Java Runtime Environment/
has value '1.6', but '1.4' is required.
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment.
所以,不能 簡單 的修改登錄檔的 CurrentVersion 值 來達到更改執行的 JRE 。若人 為 的修改 CurrentVersion ,會使得不同版本的 java.exe 加 載 與己版本不符的 java.dll 及 jvm.dll ,將引起 難 以 預 料的後果! 一般地,當在系 統 中裝了兩套或多套版本的 Java2 SDK ,後面安裝的 Java2 SDK 會將自己 帶 的 java.exe 和 javaw.exe 拷 貝 到 %SystemRoot%/system32 目 錄 下,從而覆蓋先前版本的 java.exe 和 javaw.exe ,並且在登錄檔中改寫 CurrentVersion 為 後安裝的版本。 所以建 議 在安裝 Java2 SDK 前,先卸 載 以前 安裝的版本。