2012-06-16 78 views
30

我剛剛在Windows XP中安裝了Java JDK 6u33。即使我沒有設置PATH環境變量,我也能夠在命令提示符下運行java -version「system32 java.exe」和「Program Files Java jdk1.6.0_33 bin java.exe」有什麼區別?

當我運行此命令for %i in (java.exe) do @echo. %~$PATH:i,我得到這樣的輸出: C:\WINDOWS\system32\java.exe

當我檢查我的電腦,我發現有2的java.exe:
1. C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
2. C:\WINDOWS\system32\java.exe

我可以知道system32\java.exeProgram Files\Java\jdk1.6.0_33\bin\java.exe之間的區別是什麼?當我運行for %i in (java.exe) do @echo. %~$PATH:i時,爲什麼只顯示system32\java.exe

我還需要將C:\Program Files\Java\jdk1.6.0_33\bin\添加到我的PATH環境變量中嗎?

回答

26

設置PATH變量只是爲了讓您可以訪問javac以及jdk bin文件夾中的其他程序和工具。

\windows\system32\java.exe設置成不是每個人都需要設置PATH變量只是爲了運行Java程序(命令行)選擇安裝的Java版本(最後一個安裝似乎)如果安裝了多個(公共)虛擬機(JVM)。

請參閱此鏈接進一步信息:

http://mindprod.com/jgloss/javaexe.html#MULTIPLES

報價:

更復雜的是在SYSTEM32的java.exe的只是一個虛擬的。 它看起來在註冊表中,然後決定使用哪個真正的java.exe。 安裝的最後一個JVM會成爲所使用的JVM,即使它比較舊。 要切換JVM,您通常必須重新安裝所需的。

+11

這不是一個虛擬的「java.exe」,你不需要重新安裝,你簡單地通過所需的版本與像-java -version:1.6「MyClass'這樣的-version參數來強制1.6 JRE在安裝了多版本的工作站上(請參閱http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java。html) – RealHowTo

+2

的確,您可以繞過重新安裝課程的需要*如果*您將命令行參數傳遞給它,並且您當然也可以指定java運行時的完整路徑(java.exe,javaw.exe或javaws 。可執行程序)。儘管如此,對於大多數用戶來說,它們都不是很「神奇」。 –

10

(不是一個答案,而是對Mattias的答案的評論) 不知道這個「虛擬」業務。 system32中的java.exe是一個普通文件,甚至不是符號鏈接或硬鏈接。 Mattias可能指的是這裏解釋的問題:http://msdn.microsoft.com/en-us/library/aa384187

簡而言之,如果您有64位系統和Java安裝,32位應用程序將不會看到java.exe(也不是javaw。 exe,javaws.exe)安裝在C:\ Windows \ System32 \中,因爲它們將以C:\ Windows \ SysWoW64 \ masquerading作爲C:\ Windows \ System32提供。安裝程序無法在SysWoW64中放入java.exe的副本,因此嘗試啓動Java的32位應用程序將無法執行此操作。如果使用explorer查看system32目錄,這將困擾用戶,因爲explorer是一個64位應用程序,因此會看到「真實」的system32目錄。

+4

在64位系統上,通常應安裝64位和32位版本的Java。 –

+0

我有這樣的安裝,但例如64位Eclipse運行32位Java,任何想法爲什麼?當我運行'java -version'時,它也會返回32位版本。是否可以修改它以主要使用64位? – Betlista

+0

Betlista,您是否安裝了兩個JDK? – Urhixidur

相關問題