【问题标题】:JRE installation directory in Windows [closed]Windows中的JRE安装目录[关闭]
【发布时间】:2010-10-14 05:39:00
【问题描述】:

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

which java

是否有任何 Windows 等效项?

【问题讨论】:

标签: java


【解决方案1】:

where java 可以让我列出所有 java exe,但 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)

【讨论】:

  • java 在 Windows 下无法运行的地方。 java -verbose 做了你提到的伎俩。谢谢。
  • 当我执行 java -verbose 时,我看不到路径。你在哪个版本的java,Winbdows上试试这个?
  • @RC:我认为 java 仅适用于 Win7 / Win2008。
  • 使用win7,where和verbose都在工作。
  • 难以置信!我不知道 Win8 上存在该命令,但显然它确实存在。谢谢!
【解决方案2】:

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

  • 打开密钥HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
  • 阅读CurrentVersionREG_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

【讨论】:

  • 这不一定正确,因为当前路径可能定位到不同的 Java 可执行文件。这只是表示使用 Oracle 安装程序安装的版本。
【解决方案3】:

继我的其他评论之后,这里有一个批处理文件,它根据注册表值显示当前的 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

【讨论】:

    【解决方案4】:

    看我上一个问题的答案here

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

    【讨论】:

      【解决方案5】:

      在命令行中你可以输入java -version

      【讨论】:

      • -1 不提供任何路径信息
      • 如果安装了Java并设置了环境变量,是否需要路径?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多