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

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


当前回答

Powershell一内衬:

$p='HKLM:\SOFTWARE\JavaSoft\Java Development Kit'; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome

其他回答

在Windows PowerShell中,您可以使用Get-Command功能查看Java安装在哪里:

Get-Command -All java

Or

gcm -All java

-All部分确保显示它在路径查找中出现的所有位置。下面是示例输出。

PS C:> gcm -All java

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     java.exe                                           8.0.202.8  C:\Program Files (x86)\Common Files\Oracle\Java\jav...
Application     java.exe                                           8.0.131... C:\ProgramData\Oracle\Java\javapath\java.exe

只需在命令行中执行set命令。然后你会看到你所设置的所有环境变量。

如果在Unix上,你可以简化它:

$ set | grep "JAVA_HOME" 

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

在终端中运行:

/usr/libexec/java_home

从命令行运行这个程序:

// File: Main.java
public class Main {

    public static void main(String[] args) {
       System.out.println(System.getProperty("java.home"));
    }

}


$ javac Main.java
$ java Main

如果你使用的是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