如何在Windows机器上查找JDK的安装位置?

402

我需要知道JDK在我的计算机上的位置。

命令提示符中运行java -version,它会显示版本为“1.6.xx”。 为了找到此SDK在我的计算机上的位置,我尝试使用echo %JAVA_HOME%,但它只显示“JAVA_HOME”(因为在我的环境变量中没有设置“JAVA_PATH”变量)。


2
不幸的是,我认为下面的一些答案可能行不通,因为显然在更近期的Java版本中有些事情已经改变了。今天我下载了7.60版本的Java SDK。经过一番搜索,我发现它位于C:\Program Files (x86)\Java\jdk1.7.0_60。还有一个旧版本6的JRE已经安装好了。它位于C:\Program Files\Java,而且它在%PATH%上而不是新的安装路径。 - likejudo
1
最佳答案在底部,来自 PowerShell 的 majkinetor 的一行代码:$p='HKLM:\SOFTWARE\JavaSoft\Java Development Kit'; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome - JohnP2
1
还有一件事,如果你的JDK是与IntelliJ IDEA捆绑在一起的,它可能会在IDEA安装附近的某个地方。对我来说,它在一个比IDEA文件夹高一级的文件夹中,并且PATH变量指向Program Files中的一个JRE。 - KGS
25个回答

1
也许以上方法有效...我尝试了一些,但对我没用。以下方法是有效的:
在终端中运行以下命令:
/usr/libexec/java_home

1

简单的方法(Windows): 使用Java打开应用程序。 按下ctrl + shift + esc

右键单击OpenJDK平台二进制文件。点击打开文件位置。 然后它会显示java/javaw.exe,然后转到顶部,显示文件夹并单击jdk,然后右键复制路径,完成。(不适用于使用捆绑jre路径/运行时的应用程序,因为它将显示路径到捆绑运行时)


0
#!/bin/bash

if [[ $(which ${JAVA_HOME}/bin/java) ]]; then
    exe="${JAVA_HOME}/bin/java"
elif [[ $(which java) ]]; then
    exe="java"
else 
    echo "Java environment is not detected."
    exit 1
fi

${exe} -version

For windows:

@echo off
if "%JAVA_HOME%" == "" goto nojavahome

echo Using JAVA_HOME            :   %JAVA_HOME%

"%JAVA_HOME%/bin/java.exe" -version
goto exit

:nojavahome
echo The JAVA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program.
goto exit

:exit

这个链接可能有助于解释如何从Bash查找Java可执行文件: http://srcode.org/2014/05/07/detect-java-executable/


1
虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。仅有链接的答案可能会因为链接页面更改而失效。 - Shaiful Islam
1
谢谢@ShaifulIslam,你说得对。我已经添加了链接中的代码。 - user1663023

0

在Windows命令提示符中:

set "JAVA_HOME" 

0

适用于32/64位Windows的脚本。

@echo off

setlocal enabledelayedexpansion

::- Get the Java Version
set KEY="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"
set KEY64="HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment"
set VALUE=CurrentVersion
reg query %KEY% /v %VALUE% 2>nul || (
    set KEY=!KEY64!
    reg query !KEY! /v %VALUE% 2>nul || (
    echo JRE not installed 
    exit /b 1
)
)

set JRE_VERSION=
for /f "tokens=2,*" %%a in ('reg query %KEY% /v %VALUE% ^| findstr %VALUE%') do (
    set JRE_VERSION=%%b
)

echo JRE VERSION: %JRE_VERSION%

::- Get the JavaHome
set KEY="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\%JRE_VERSION%"
set KEY64="HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment\%JRE_VERSION%"
set VALUE=JavaHome
reg query %KEY% /v %VALUE% 2>nul || (
    set KEY=!KEY64!
    reg query !KEY! /v %VALUE% 2>nul || (
    echo JavaHome not installed
    exit /b 1
)
)

set JAVAHOME=
for /f "tokens=2,*" %%a in ('reg query %KEY% /v %VALUE% ^| findstr %VALUE%') do (
    set JAVAHOME=%%b
)

echo JavaHome: %JAVAHOME%

endlocal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接