在Windows下是否有任何命令可以检查当前正在使用的JRE(由于计算机上可能安装了多个JRE)的安装目录?对于Linux,相应的命令是
which java
有没有Windows的等效物?
在Windows下是否有任何命令可以检查当前正在使用的JRE(由于计算机上可能安装了多个JRE)的安装目录?对于Linux,相应的命令是
which java
有没有Windows的等效物?
where java
可以列出所有的 Java 可执行文件,但是 java -verbose
可以告诉你使用了哪个 rt.jar
,从而确定了使用了哪个 JRE(完整路径):
[Opened C:\Program Files\Java\jre6\lib\rt.jar]
...
编辑:Win7和Java:
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
虽然不是命令,但是可以在注册表中找到这些信息:
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
CurrentVersion
的 REG_SZ 值CurrentVersion
值的子键,其父键为 Java Runtime Environment
JavaHome
的 REG_SZ 值以获取路径例如,在我的工作站上,我有:
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
CurrentVersion = "1.6"
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.5
JavaHome = "C:\Program Files\Java\jre1.5.0_20"
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6
JavaHome = "C:\Program Files\Java\jre6"
所以我的当前 JRE 位于 C:\Program Files\Java\jre6
继续我之前的评论,这里有一个批处理文件,根据注册表值显示当前JRE或JDK。
这与其他解决方案不同之处在于,即使Java未在 PATH
上安装,该文件仍能正常工作。
@ECHO off
SET KIT=JavaSoft\Java Runtime Environment
call:ReadRegValue VER "HKLM\Software\%KIT%" "CurrentVersion"
IF "%VER%" NEQ "" GOTO FoundJRE
SET KIT=Wow6432Node\JavaSoft\Java Runtime Environment
call:ReadRegValue VER "HKLM\Software\%KIT%" "CurrentVersion"
IF "%VER%" NEQ "" GOTO FoundJRE
SET KIT=JavaSoft\Java Development Kit
call:ReadRegValue VER "HKLM\Software\%KIT%" "CurrentVersion"
IF "%VER%" NEQ "" GOTO FoundJRE
SET KIT=Wow6432Node\JavaSoft\Java Development Kit
call:ReadRegValue VER "HKLM\Software\%KIT%" "CurrentVersion"
IF "%VER%" NEQ "" GOTO FoundJRE
ECHO Failed to find Java
GOTO :EOF
:FoundJRE
call:ReadRegValue JAVAPATH "HKLM\Software\%KIT%\%VER%" "JavaHome"
ECHO %JAVAPATH%
GOTO :EOF
:ReadRegValue
SET key=%2%
SET name=%3%
SET "%~1="
SET reg=reg
IF DEFINED ProgramFiles(x86) (
IF EXIST %WINDIR%\sysnative\reg.exe SET reg=%WINDIR%\sysnative\reg.exe
)
FOR /F "usebackq tokens=3* skip=1" %%A IN (`%reg% QUERY %key% /v %name% 2^>NUL`) DO SET "%~1=%%A %%B"
GOTO :EOF
请查看我之前问题的回答,这里
c:\> for %i in (java.exe) do @echo. %~$PATH:i
C:\WINDOWS\system32\java.exe
java -version
。