我需要知道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设置)。
当前回答
也许上面的方法有用…我试了一些,但不是为了我自己。事情是这样的:
在终端中运行:
/usr/libexec/java_home
其他回答
脚本适用于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
#!/bin/bash
if [[ $(which ${JAVA_HOME}/bin/java) ]]; then
exe="${JAVA_HOME}/bin/java"
elif [[ $(which java) ]]; then
exe="java"
else
echo "Java environment is not detected."
exit 1
fi
${exe} -version
windows:
@echo off
if "%JAVA_HOME%" == "" goto nojavahome
echo Using JAVA_HOME : %JAVA_HOME%
"%JAVA_HOME%/bin/java.exe" -version
goto exit
:nojavahome
echo The JAVA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program.
goto exit
:exit
这个链接可能有助于解释如何从bash中找到java可执行文件:http://srcode.org/2014/05/07/detect-java-executable/
更多关于Windows…java变量。Home并不总是与运行的二进制文件位于同一位置。
正如Denis The Menace所说,安装程序将Java文件放到Program files中,同时将Java .exe放到System32中。没有Java相关的路径Java -version仍然可以工作。然而,当PeterMmm的程序运行时,它报告程序文件的值为java。home,这没有错(Java安装在那里),但实际运行的二进制文件位于System32。
查找java.exe二进制文件位置的一种方法是,在PeterMmm的代码中添加下面这行代码,以保持程序运行更长时间:
try{Thread.sleep(60000);}catch(Exception e) {}
编译并运行它,然后查找java.exe映像的位置。例如,在Windows 7中打开任务管理器,找到Java .exe条目,右键单击并选择“打开文件位置”,这将打开Java二进制文件的确切位置。在本例中,它是System32。
命令行:
在命令提示符中运行where java。
GUI:
在Windows 10上,你可以通过控制面板>程序> Java找到路径。在显示的面板中,您可以找到如下截图所示的路径。在Java控制面板中,转到“Java”选项卡,然后单击“查看和管理Java应用程序和applet的Java运行时版本和设置”描述下的“查看”按钮。
这应该适用于Windows 7和其他最新版本的Windows。
这是特定于操作系统的。在Unix:
which java
将显示可执行文件的路径。我不知道Windows中是否有类似的,但你通常在系统PATH中有JDK安装的bin文件夹:
echo %PATH%