如何在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个回答

455

如果你正在使用Linux/Unix/Mac OS X:

尝试这个:

$ which java

应输出确切位置。

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

在我的电脑上(Mac OS X - Snow Leopard):

$ 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

1
实际上,%VAR_NAME% 表单是 Windows。 - sblundy
3
已更新回答并添加了Linux/Unix/Mac OS X和Windows的示例。 - Pablo Santa Cruz
161
至少在Windows 7上,“Java”可正常运行。但是,如果您确实需要JDK而不是JRE,则需要在返回的目录中寻找“bin/javac/”。 - Jon Strayer
@Pablo Santa Cruz 这段代码是什么意思:for %i in (java.exe) do @echo. %~$PATH:i - someone
1
MacOS 一行代码:ls -l $(which java) | awk '{print $11}' - msanford
显示剩余3条评论

155

在Windows操作系统中,打开开始菜单,找到cmd并点击打开。

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

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

17
Windows(7+) => javac.exe 的位置 - hB0
6
在 Windows 上,它是在哪里,Java? - Pabitra Dash
14
只有当可执行文件在PATH路径中时,“where java”命令才能正常工作。如果由于某种原因,javac不在路径中,它将不会返回任何结果,但这并不意味着JDK未安装。因此,在一般情况下,@grokster提出的文件搜索解决方案可以保证得到结果(尽管可能需要时间来完成)。 - Nikita R.
2
'for-loop'的东西没有起作用,但我在这里找到了它:C:\Program Files (x86)\Java\jdk1.6.0_24\bin> - AjayKumarBasuthkar
请注意,如果您正在遵循此(https://codelabs.developers.google.com/codelabs/build-your-first-android-app/#0)教程使用Android Studio,则实际路径将不是上面命令返回的路径。很可能,您会有类似于“C:\ Program Files \ Java | <jdk>”的东西,其中“jdk”被替换为JDK版本10的“jdk-10.0.1”。 - Euler_Salter

136
在Windows中的命令提示符下,输入以下命令: where javac 该命令将会显示Java编译器的安装路径。

11
在 Windows 系统中,Java 的安装路径是: - Pabitra Dash
9
注意,仅当javac在路径中时才有效。如果不在路径中,则此命令将显示未找到,但仍可安装JDK。如果JDK安装后路径未更新,请使用其他方法。 - Nikita R.
1
你提到了使用 for %i in (javac.exe) do @echo. %~$PATH:i,但正如你所写的那样,如果你没有在 PATH 中设置它,它将无法工作。 - Nimrod
如果我有多个JDK呢? - Karen Goh
在我目前使用的 Windows 10 机器上,使用 "where java" 和 "where javac" 命令没有返回任何结果。 - ryanwebjackson

43

命令行:

在命令提示符上运行where java

图片描述

图形用户界面(GUI):

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

这个方法适用于Windows 7和其他最近的Windows版本。

图片描述


2
我使用的是Windows 10操作系统,在控制面板中找不到Java。 - Derek Jin
1
你确定Java已经安装并且是使用Windows安装包进行安装的吗? - smartexpert
你可以尝试查看你的账户和系统环境变量,以找出Java可能被安装在哪里,寻找javacpl.exe文件。 - smartexpert
这种方法似乎并没有显示JDK的位置。请参见https://dev59.com/JFMH5IYBdhLWcg3w_GbX#72278455。 - Woodchuck

34

在Windows中,默认情况下是:C:\Program Files\Java\jdk1.6.0_14(其中的数字可能会因版本而异)。


你将如何检索不同的版本号? - LZH
只需从资源管理器中逐级导航到安装目录,您就会看到您安装的JDK文件夹版本。 - ahnbizcad
有时候JDK是由第三方分发的,这种情况下你可能没有Java在Program Files下,@Pablo的回答帮助完美定位。 - Naga

27

Java安装程序将几个文件放入%WinDir%\System32文件夹中(java.exe,javaws.exe等)。 当您在命令行中键入java.exe或创建进程时,如果它们在%PATH%文件夹中不存在,则Windows会将它们作为最后的选择运行。

您可以在注册表中查找安装的所有Java版本。 查看HKLM\SOFTWARE\JavaSoft\Java Runtime Environment和HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment(64位Windows上的32位Java)。

这就是Java本身发现已安装的不同版本的方式。 这也是为什么32位和64位版本可以共存并且在不干扰的情况下正常工作的原因。


27
在Windows平台上,简单明了地说:

where java


9
结果导致Java位置错误,应该是C:\WINDOWS\System32\java.exe。但实际的jdk安装在C:\Java\jdk1.7.0\(因为设置了JAVA_HOME)。 - Himanshu Bhardwaj

22

在Windows系统下,您可以使用

C:>dir /b /s java.exe

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


19

下面的批处理脚本将打印出现有默认的JRE。可以通过将 Java运行环境 替换为 Java开发工具包 来轻松修改以查找安装的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

15
在 Windows 命令提示符中,只需键入:

set java_home

或者,如果你不喜欢命令行环境,你可以从以下位置检查:

开始菜单 > 计算机 > 属性 > 高级系统设置。然后打开高级选项卡 > 环境变量,在系统变量中尝试找到JAVA_HOME。

输入图像描述


这给了我jdk文件夹。当我在Scala工作表中运行System.getProperty(“java.home”)时,它会给我jre子文件夹。显然关于Java Home存在一些歧义。 - Ion Freeman

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