我需要知道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设置)。
当前回答
Powershell一内衬:
$p='HKLM:\SOFTWARE\JavaSoft\Java Development Kit'; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome
其他回答
如果你使用的是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
下面的批处理脚本将打印出现有的默认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命令提示符中,只需输入:
set java_home
或者,如果你不喜欢命令环境,你可以检查它:
开始菜单>计算机>系统属性>高级系统属性。然后打开高级选项卡>环境变量,在系统变量中尝试找到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主页。
在windows中,默认值是:C:\Program Files\Java\ jdk1.6.0_14(其中数字可能不同,因为它们是版本)。