2013-06-25 73 views
0

按照這裏的文檔link「的Java」命令,在Windows 7中的回報怪異路徑

要找出哪個Java可執行文件在PATH中找到的第一個,執行:

which java 

此命令返回我的機器中有以下三條路徑

C:\>which java 
C:\Windows\system32\java.EXE 
C:\Program Files (x86)\Java\jre7\bin\java.EXE 
C:\Windows\System32\java.EXE 

C:\ Windows \ System32中沒有java.exe。 我已經安裝在位置爪哇(Java SE 7中更新25)C:\Program Files (x86)\Java\jre7\ 這也被證實運行「Java所在」

C:\>where java 
C:\Program Files (x86)\Java\jre7\bin\java.exe 

我已經在環境變量設置Path=C:\Program Files (x86)\Java\jre7\bin;。此路徑不用於任何環境變量。

我想知道的是,which java如何以及爲什麼返回C:\Windows\System32\java.EXE並且這也是兩次?

由於是Windows沒有本地which命令,我剛剛發現一個which.exe已經建立,以模仿「這」與下面的腳本

@for %%a in (%PATH%) do @if exist %%a\%1 (
for /f %%b in ('dir /b %%a\%1') do @echo %%a\%%b 
) 

@rem for %a in (%PATH%) do @if exist %a\which* dir /b /w %a\which* 
+1

Windows有'which'命令嗎? '哪個'的輸出是什麼?什麼是'哪裏'?在Windows上從未聽說過有用的實用程序。你使用Cygwin? –

+0

雅,他必須使用Cygwin。 '哪一個是unix命令 - http://stackoverflow.com/questions/304319/is-there-an-equivalent-of-which-on-windows –

+0

@ T-Bull我在調查你的評論後發現,使用以下腳本創建了一個exe,以模擬「which」命令。 (%PATH%)中的@@ %% a do @if存在%% a \%1( for('dir/b %% a \%1'中的/ f %% b)do @echo %% a %% b ) @rem for%a in(%PATH%)do @if exists%a \ which * dir/b/w%a \ which *'and「which which which returns a path to this which.exe – ontherocks

回答

1

system32中的java.exe的似乎很奇怪,但當你沒有java.exe它很好。更奇怪的是,在我的Windows7上沒有「哪個」命令,就在哪裏。有可能「哪個」來自PATH上的其他路徑?

+0

http://stackoverflow.com/questions/304319/is-there-an-equivalent-of-which-on-windows –

0

在我的系統上,我也有java.exeC:\WINDOWS\system32。並且javaw.exejavaws.exe。原來,這些與C:\Program Files\Java\jdk7\bin中的文件完全相同。所以Java安裝程序似乎很可能將它們複製到系統目錄以防止路徑問題。

+0

看來我也有system.exe中的java.exe。即使我已選中「顯示隱藏的文件,文件夾和驅動器」並且未選中「隱藏受保護的操作系統文件(推薦)」,我仍無法在資源管理器中查看它。它們只在命令提示符下顯示。你能看到他們在探險家嗎? – ontherocks

+0

是的,這只是一個普通的文件。也許這是因爲我在該框上運行WinXP並使用具有管理權限的帳戶。 Explorer配置爲無論如何都顯示所有文件(每當創建新用戶時的標準程序)。 –

1

您的操作系統必須是Windows 7 64位。而你的jre和哪個命令是32位應用程序。 64位操作系統將%SystemRoot%\system32目錄用於其64位庫和可執行文件。這是爲了向後兼容的原因而完成的,因爲許多遺留應用程序被硬編碼以使用該路徑。在執行32位應用程序時,WoW64將32位DLL透明地重定向到%SystemRoot%\SysWoW64,其中包含32位庫和可執行文件。因此,對於32位應用程序,C:\Windows\system32\java.EXE實際上是C:\Windows\SysWoW64\java.EXE