Windows中的JRE安装目录

Ank*_*kur 26 java

是否有任何命令检查活动(因为机器可以安装多个JRE)JRE安装目录在Windows下.对于linux,相应的命令是

which java
Run Code Online (Sandbox Code Playgroud)

有没有Windows等价的?

小智 31

where java我可以列出所有java exe,但会java -verbose告诉你哪些rt.jar是使用的,因此jre(完整路径):

[Opened C:\Program Files\Java\jre6\lib\rt.jar]
...
Run Code Online (Sandbox Code Playgroud)

编辑: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)
Run Code Online (Sandbox Code Playgroud)

  • @RC:我认为java只适用于Win7/Win2008. (3认同)
  • 使用win7,where和verbose正在工作. (2认同)

glo*_*lob 23

不作为命令,但此信息在注册表中:

  • 打开钥匙 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
  • 阅读CurrentVersionREG_SZ
  • Java Runtime Environment使用CurrentVersion值打开名称下的子项
  • 读取JavaHomeREG_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"
Run Code Online (Sandbox Code Playgroud)

所以我现在的JRE就在 C:\Program Files\Java\jre6


glo*_*lob 7

继我的其他评论之后,这是一个批处理文件,它根据注册表值显示当前的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
Run Code Online (Sandbox Code Playgroud)


Mic*_*Mao 5

在这里查看我之前问题的答案

c:\> for %i in (java.exe) do @echo.   %~$PATH:i
C:\WINDOWS\system32\java.exe
Run Code Online (Sandbox Code Playgroud)