web-dev-qa-db-fra.com

Comment trouver où JDK est installé sur ma machine Windows?

J'ai besoin de savoir où se trouve JDK sur ma machine.

Lors de l'exécution de Java -version dans cmd, la version est indiquée sous la forme "1.6.xx". Pour trouver l'emplacement de ce SDK sur ma machine, j'ai essayé d'utiliser echo %Java_HOME% mais il n'affiche que "Java_HOME" (car aucune variable "Java_PATH" n'est définie dans mes variables d'environnement).

271
Ashine

Si vous utilisez Linux/Unix/Mac OS X:

Essaye ça:

$ which Java

Devrait sortir l'emplacement exact.

Ensuite, vous pouvez définir vous-même la variable d'environnement Java_HOME.

Sur mon ordinateur (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

Si vous utilisez Windows:

c:\> for %i in (Java.exe) do @echo.   %~$PATH:i
286
Pablo Santa Cruz

Windows> Démarrer> cmd>

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

Si vous avez un JDK installé, le chemin est affiché,
par exemple: C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe

101
grokster

Sous Windows à l'invite de commande

where javac

83
NanoBennett

Dans Windows, la valeur par défaut est: C:\Program Files\Java\jdk1.6.0_14 (où les nombres peuvent différer, car ils correspondent à la version).

26
Ronen Rabinovici

Le programme d’installation Java place plusieurs fichiers dans le dossier% WinDir%\System32 (Java.exe, javaws.exe et quelques autres). Lorsque vous tapez Java.exe en ligne de commande ou créez un processus sans chemin d'accès complet, Windows les exécute en dernier recours s'ils sont absents des dossiers% PATH%.

Vous pouvez rechercher toutes les versions de Java installées dans le registre. Examinez l'environnement d'exécution HKLM\SOFTWARE\JavaSoft\Java et l'environnement d'exécution HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java pour Java 32 bits sous Windows 64 bits.

C’est ainsi que Java découvre différentes versions installées. Et c’est pourquoi les versions 32 bits et 64 bits peuvent coexister et fonctionnent correctement sans interférence.

26
Denis The Menace

Clair et simple sur les plateformes Windows:

où Java

21
luccaa

Le script de lot ci-dessous imprimera le JRE par défaut existant. Il peut être facilement modifié pour trouver la version du JDK installée en remplaçant le Java Runtime Environment par Java Development Kit.

@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

Sous Windows 10, vous pouvez connaître le chemin en allant dans Panneau de configuration> Java. Dans le panneau qui apparaît, vous pouvez trouver le chemin comme indiqué dans la capture d'écran ci-dessous. Dans le panneau de configuration Java, accédez à l'onglet "Java", puis cliquez sur le bouton "Afficher" sous la description "Afficher et gérer les versions et les paramètres de Java Runtime pour les applications et les applets Java".

Cela devrait fonctionner sous Windows 7 et éventuellement dans d’autres versions récentes de Windows.

enter image description here

12
smartexpert

Dans une invite de commande Windows, tapez simplement:

set Java_home

Ou, si vous n'aimez pas l'environnement de commande, vous pouvez le vérifier sous:

Menu Démarrer> Ordinateur> Propriétés système> Propriétés système avancées. Ensuite, ouvrez l'onglet Avancé> Variables d'environnement et dans la variable système, essayez de trouver Java_HOME.

enter image description here

12
AndroidDev

Plus sur Windows ... variable Java.home n’est pas toujours le même emplacement que le binaire exécuté.

Comme le dit Denis The Menace, le programme d'installation place les fichiers Java dans Program Files, mais aussi Java.exe dans System32. Avec rien lié à Java sur le chemin Java -version peut toujours fonctionner. Cependant, lorsque le programme de PeterMmm est exécuté, il indique la valeur Program Files as Java.home, ce n'est pas faux (Java y est installé) mais le binaire en cours d'exécution est situé. dans System32.

Une façon de rechercher l'emplacement du fichier binaire Java.exe, ajoutez la ligne suivante au code de PeterMmm pour que le programme s'exécute plus longtemps:

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

Compilez et exécutez-le, puis recherchez l'emplacement de l'image Java.exe. Par exemple. Dans Windows 7, ouvrez le gestionnaire de tâches, recherchez l'entrée Java.exe, cliquez avec le bouton droit de la souris et sélectionnez "Ouvrir l'emplacement du fichier". Ceci ouvre l'emplacement exact du binaire Java. Dans ce cas, il s'agirait de System32.

10
Moika Turns

Sous Windows, vous pouvez utiliser

C:>dir /b /s Java.exe

d’imprimer le chemin complet de chaque "Java.exe" sur votre lecteur C:, qu’ils soient ou non dans votre variable d’environnement PATH.

9
Thomas Bender

Exécutez ce programme en ligne de commande:

// 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

Powershell une doublure:

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

Avez-vous essayé de regarder votre variable% PATH%. C'est ce que Windows utilise pour trouver un exécutable.

5
sblundy

Il suffit d’exécuter la commande set dans votre ligne de commande. Ensuite, vous voyez toutes les variables d’environnement que vous avez définies.

Ou si vous utilisez Unix, vous pouvez le simplifier:

$ set | grep "Java_HOME" 
5
anon

Ceci est spécifique à l'OS. Sous Unix:

which Java

affichera le chemin d'accès à l'exécutable. Je ne connais pas d'équivalent Windows, mais vous avez généralement le dossier bin de l'installation JDK dans le système PATH:

echo %PATH%
3
Michael Borgwardt

Aucune de ces réponses n'est correcte pour Linux si vous recherchez une maison contenant les sous-répertoires tels que: bin, docs, include, jre, lib, etc.

Sur Ubuntu pour openjdk1.8.0, cela se trouve dans: /usr/lib/jvm/Java-1.8.0-openjdk-AMD64

et vous préférerez peut-être l'utiliser pour Java_HOME car vous pourrez trouver des en-têtes si vous créez des fichiers source JNI. Alors que c'est vrai, which Java fournira le chemin binaire, ce n'est pas la vraie maison JDK.

2
EntangledLoops

Sur macOS, lancez:

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

Sur ma machine, cela affiche:

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

Notez que l'exécution de which Java n'affiche pas l'emplacement du JDK, car la commande Java fait plutôt partie de JavaVM.framework, qui encapsule le véritable 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

Pour les fenêtres:

@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

Ce lien pourrait aider à expliquer comment trouver un exécutable Java à partir de bash: http://srcode.org/2014/05/07/detect-Java-executable/

0
Elgs Qian Chen

Script pour Windows 32/64 bits.

@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

dans Windows cmd:

set "Java_HOME" 
0
Husam

J'ai amélioré la réponse de munsingh ci-dessus en testant la clé de registre dans les registres 64 bits et 32 ​​bits, si nécessaire:

::- 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%"

référence pour l'accès au registre 64 bits

0
JohnP2