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

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


当前回答

下面的批处理脚本将打印出现有的默认JRE。通过将Java运行时环境替换为Java Development Kit,可以轻松地修改它以查找已安装的JDK版本。

@echo off

setlocal

::- Get the Java Version
set KEY="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"
set VALUE=CurrentVersion
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 VALUE=JavaHome
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

其他回答

Windows >开始> cmd > . cmd

C:> for %i in (javac.exe) do @echo.   %~$PATH:i

如果您安装了JDK,则会显示Path, 例如:C:\Program Files\Java\ jdk1.6.0_30\bin\javac.exe

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

which java

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

echo %PATH%

如果你使用的是Linux/Unix/Mac OS X:

试试这个:

$ which java

应该输出准确的位置。

之后,您可以自己设置JAVA_HOME环境变量。

在我的电脑(Mac OS X -雪豹):

$ which java
/usr/bin/java
$ ls -l /usr/bin/java
lrwxr-xr-x  1 root  wheel  74 Nov  7 07:59 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

如果你使用的是Windows:

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

在macOS上运行:

cd /tmp && echo 'public class Main {public static void main(String[] args) {System.out.println(System.getProperty("java.home"));}}' > Main.java && javac Main.java && java Main

在我的机器上,这样打印出来:

/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home

注意,运行哪个java不会显示JDK的位置,因为java命令是JavaVM.framework的一部分,它包装了真正的JDK:

$ which java
/usr/bin/java
/private/tmp
$ ls -l /usr/bin/java
lrwxr-xr-x  1 root  wheel  74 14 Nov 17:37 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

在Windows下,您可以使用

C:>dir /b /s java.exe

打印C:驱动器上每个“java.exe”的完整路径,而不管它们是否在path环境变量中。