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

在cmd中运行Java -version时,它显示的版本为'1.6.xx'。 为了找到这个SDK在我的机器上的位置,我尝试使用echo %JAVA_HOME%,但它只显示'JAVA_HOME'(因为在我的环境变量中没有'JAVA_PATH' var设置)。


当前回答

这是特定于操作系统的。在Unix:

which java

将显示可执行文件的路径。我不知道Windows中是否有类似的,但你通常在系统PATH中有JDK安装的bin文件夹:

echo %PATH%

其他回答

#!/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

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/

这是特定于操作系统的。在Unix:

which java

将显示可执行文件的路径。我不知道Windows中是否有类似的,但你通常在系统PATH中有JDK安装的bin文件夹:

echo %PATH%

命令行:

在命令提示符中运行where java。

GUI:

在Windows 10上,你可以通过控制面板>程序> Java找到路径。在显示的面板中,您可以找到如下截图所示的路径。在Java控制面板中,转到“Java”选项卡,然后单击“查看和管理Java应用程序和applet的Java运行时版本和设置”描述下的“查看”按钮。

这应该适用于Windows 7和其他最新版本的Windows。

也许上面的方法有用…我试了一些,但不是为了我自己。事情是这样的:

在终端中运行:

/usr/libexec/java_home

如果您正在寻找包含子dirs(如:bin、docs、include、jre、lib等)的home,那么这些答案对于Linux都不正确。

在Ubuntu for openjdk1.8.0上,这是在: /usr/lib/jvm/java-1.8.0-openjdk-amd64

并且您可能更喜欢将其用于JAVA_HOME,因为如果您构建JNI源文件,您将能够找到头文件。虽然哪个java会提供二进制路径是正确的,但它不是真正的JDK主页。