我需要知道JDK在我的机器上的位置。
在cmd中运行Java -version时,它显示的版本为'1.6.xx'。 为了找到这个SDK在我的机器上的位置,我尝试使用echo %JAVA_HOME%,但它只显示'JAVA_HOME'(因为在我的环境变量中没有'JAVA_PATH' var设置)。
我需要知道JDK在我的机器上的位置。
在cmd中运行Java -version时,它显示的版本为'1.6.xx'。 为了找到这个SDK在我的机器上的位置,我尝试使用echo %JAVA_HOME%,但它只显示'JAVA_HOME'(因为在我的环境变量中没有'JAVA_PATH' var设置)。
当前回答
Java安装程序将几个文件放入%WinDir%\System32文件夹(Java .exe, javaws.exe和其他一些文件)。当您在命令行中键入java.exe或创建没有完整路径的进程时,如果% path %文件夹中缺少这些文件,Windows会将它们作为最后的手段运行。
您可以查找注册表中安装的所有Java版本。看看HKLM\SOFTWARE\JavaSoft\Java运行时环境和HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java运行时环境在64位Windows上的32位Java。
这就是java本身如何发现安装的不同版本。这就是为什么32位和64位版本可以共存,并且工作良好而没有干扰。
其他回答
如果你使用的是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
您是否尝试查看您的%PATH%变量。这就是Windows用来查找任何可执行文件的方法。
在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
在Windows的命令提示符
在javac
脚本适用于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