web-dev-qa-db-ja.com

どのように私は私のwindowsマシン上でJDKがインストールされている場所を見つけるのですか?

私のマシンのどこにJDKがあるのか​​を知る必要があります。

cmd Java -versionを実行すると、バージョンは '1.6.xx'と表示されます。私のマシンでこのSDKの場所を見つけるためにecho %Java_HOME%を使ってみましたが、それは 'Java_HOME'だけを示しています(私の環境変数に 'Java_PATH'変数が設定されていないため)。

264
Ashine

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
280

Windows>スタート> cmd>

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

JDKがインストールされている場合は、パスが表示されます。
例:C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe

99
grokster

Windowsでは、コマンドプロンプトで

where javac

80
NanoBennett

Javaインストーラーは、いくつかのファイルを%WinDir%\ System32フォルダーに置きます(Java.exe、javaws.exeなど)。コマンドラインでJava.exeと入力するか、フルパスなしでプロセスを作成すると、%PATH%フォルダに存在しない場合、Windowsはこれらを最後の手段として実行します。

レジストリにインストールされているすべてのバージョンのJavaを検索できます。 64ビットWindows上の32ビットJava用のHKLM¥SOFTWARE¥JavaSoft¥Java Runtime EnvironmentおよびHKLM¥SOFTWARE¥Wow6432Node¥JavaSoft¥Java Runtime Environmentを参照してください。

これは、Java自体がインストールされているさまざまなバージョンを見つける方法です。これが、32ビット版と64ビット版の両方が共存でき、干渉することなく正常に機能する理由です。

26

Windowsでは、デフォルトはC:\Program Files\Java\jdk1.6.0_14です(数字はバージョンによって異なるため)。

25

Windowsプラットフォームでは普通で単純です。

ここでJava

21
luccaa

以下のバッチスクリプトは既存のデフォルトJREを出力します。 Java Runtime Environment 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
15
munsingh

Windowsのコマンドプロンプトで、次のように入力するだけです。

set Java_home

または、コマンド環境が気に入らない場合は、次の場所から確認できます。

[スタート]メニュー> [コンピュータ]> [システムのプロパティ]> [詳細システムのプロパティ]の順にクリックします。次に、[詳細設定]タブ> [環境変数]を開き、システム変数でJava_HOMEを見つけます。

enter image description here

11
AndroidDev

Windows 10では、[コントロールパネル]> [Java]に移動してパスを見つけることができます。表示されるパネルでは、下のスクリーンショットに示すようにパスを見つけることができます。 Javaコントロールパネルの[Java]タブに移動し、[JavaランタイムのバージョンとJavaアプリケーションおよびアプレットの設定の表示と管理]の説明の下にある[表示]ボタンをクリックします。

これはWindows 7とおそらく他の最近のバージョンのWindows上で動作するはずです。

enter image description here

10
smartexpert

Windowsの場合... variable Java.homeは、実行されるバイナリと必ずしも同じ場所にあるとは限りません。

Denis The Menaceが言っているように、インストーラはJavaファイルをProgram Filesに入れますが、Java.exeSystem32にも入れます。 Java -versionというパスに関連するJavaがなくても動作します。しかしPeterMmmのプログラムが実行されるとそれはProgram Filesの値をJava.homeとして報告しますが、これは間違いではありません(そこにJavaがインストールされています)。System32

Java.exeバイナリの場所を特定する1つの方法は、PeterMmmのコードに次の行を追加して、プログラムの実行時間を長くすることです。

try{Thread.sleep(60000);}catch(Exception e) {}

コンパイルして実行し、Java.exeイメージの場所を探します。例えば。 Windows 7では、タスクマネージャを開き、Java.exeエントリを見つけ、右クリックして「ファイルの場所を開く」を選択します。これにより、Javaバイナリの正確な場所が開きます。この場合、それはSystem32になります。

10
Moika Turns

Windowsでは、あなたは使用することができます

C:>dir /b /s Java.exe

pATH環境変数にあるかどうかにかかわらず、C:ドライブ上のすべての「Java.exe」のフルパスを印刷します。

9
Thomas Bender

このプログラムをコマンドラインから実行します。

// File: Main.Java
public class Main {

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

}


$ javac Main.Java
$ Java Main
9
PeterMmm

ワンシェルライナー:

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

あなたの%PATH%変数を見てみましたか。それがWindowsが実行可能ファイルを見つけるために使用するものです。

5
sblundy

コマンドラインでsetコマンドを実行するだけです。その後、設定したすべての環境変数が表示されます。

あるいはUnixの場合は単純化できます。

$ set | grep "Java_HOME" 
5
anon

これはOS固有です。 UNIXの場合

which Java

実行可能ファイルへのパスを表示します。私はWindowsに相当するものを知りませんが、そこには通常JDKインストールのbinフォルダーがシステムPATHにあります。

echo %PATH%
3

Bin、docs、include、jre、libなどのサブディレクトリが含まれている家を探しているのであれば、これらの答えはどれもLinuxには当てはまりません。

Openjdk1.8.0のUbuntuでは、これは次の場所にあります。/usr/lib/jvm/Java-1.8.0-openjdk-AMD64

jNIソースファイルをビルドするとヘッダーを見つけることができるため、Java_HOMEにそれを使用することをお勧めします。 which Javaがバイナリパスを提供するのは本当ですが、それは本当のJDKホームではありません。

2
EntangledLoops

MacOSでは、以下を実行してください。

cd /tmp && echo 'public class Main {public static void main(String[] args) {System.out.println(System.getProperty("Java.home"));}}' > Main.Java && javac Main.Java && Java Main

私のマシンでは、これは印刷されます。

/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home

Javaコマンドは、実際のJDKをラップするwhich Javaの一部であるため、JavaVM.frameworkを実行してもJDKの場所は表示されません。

$ which Java
/usr/bin/Java
/private/tmp
$ ls -l /usr/bin/Java
lrwxr-xr-x  1 root  wheel  74 14 Nov 17:37 /usr/bin/Java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java
1
jameshfisher
#!/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/

0
Elgs Qian Chen

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
0
Rudixx

windowsの場合cmd:

set "Java_HOME" 
0
Husam

必要に応じて、64ビットおよび32ビットのレジストリでレジストリキーをテストすることで、 munsingh の回答を改善しました。

::- Test for the registry location  
SET VALUE=CurrentVersion
SET KEY_1="HKLM\SOFTWARE\JavaSoft\Java Development Kit"
SET KEY_2=HKLM\SOFTWARE\JavaSoft\JDK
SET REG_1=reg.exe
SET REG_2="C:\Windows\sysnative\reg.exe"
SET REG_3="C:\Windows\syswow64\reg.exe"

SET KEY=%KEY_1%
SET REG=%REG_1%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

SET KEY=%KEY_2%
SET REG=%REG_1%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

::- %REG_2% is for 64-bit installations, using "C:\Windows\sysnative"
SET KEY=%KEY_1%
SET REG=%REG_2%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

SET KEY=%KEY_2%
SET REG=%REG_2%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

::- %REG_3% is for 32-bit installations on a 64-bit system, using "C:\Windows\syswow64"
SET KEY=%KEY_1%
SET REG=%REG_3%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

SET KEY=%KEY_2%
SET REG=%REG_3%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

:_set_value
FOR /F "tokens=2,*" %%a IN ('%REG% QUERY %KEY% /v %VALUE%') DO (
    SET JDK_VERSION=%%b
)
SET KEY=%KEY%\%JDK_VERSION%
SET VALUE=JavaHome
FOR /F "tokens=2,*" %%a IN ('%REG% QUERY %KEY% /v %VALUE%') DO (
    SET JAVAHOME=%%b
)
ECHO "%JAVAHOME%"
::- SETX Java_HOME "%JAVAHOME%"

64ビットレジストリへのアクセスに関する参照

0
JohnP2