我的機器上最開始安裝的是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
同時,JDK安裝程序將會把java.exe,javaw.exe,javareg.exe這3個可執行文件拷貝到%SystemRoot%\system32目錄下,由於%SystemRoot%\system32被操作系統缺省的設置爲最高優先權的PATH搜索路徑,因此可保證用戶在命令行任何目錄下可運行java.exe來啓動JVM。
查詢HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment得知CurrentVersion=1.4。
於是我手動將它修改爲1.6後,然後運行java -version得到以下結果:
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前,先卸載以前安裝的版本。
JDK版本不兼容問題之:一臺機器安裝多個版本的JDK
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
如果同事暗中傷害你,應該怎麼辦?
這個饅頭有餡
2019-02-24 13:59:08
職場中,抱怨越多的員工,越被領導瞧不起!
這個饅頭有餡
2019-02-24 13:59:08
老程序員被裁,應屆生卻能月薪 1.3 萬?這你能忍?
前端高達
2019-02-24 13:48:04
遇到到處蹭吃卻從不請客吃飯的主怎麼辦?
樑軍年
2019-02-24 13:26:35
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
高標準機房綜合配線安裝
wbzjacky
2019-02-24 13:12:38
IPsec ***實驗
wbzjacky
2019-02-24 13:12:37
真實的模擬***綜合實驗
wbzjacky
2019-02-24 13:12:37
CISCO路由AAA的Easy ***
wbzjacky
2019-02-24 13:12:37
三層交換機的HSRP、vlan、端口聚合
wbzjacky
2019-02-24 13:12:37
sql語法、關係建模
死瘦宅
2019-02-24 22:35:22
MySQL 事務、函數、觸發器、數據庫備份、權限管理
死瘦宅
2019-02-24 22:35:12