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


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

Sur l'exécution de Java -version dans cmd, il montre la version '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 il n'y a pas de var 'JAVA_PATH' défini dans mes variables d'environnement).

Author: ROMANIA_engineer, 2011-01-13

24 answers

Si vous utilisez Linux/Unix / Mac OS X:

Essayez ceci:

$ which java

Devrait afficher l'emplacement exact.

Après cela, vous pouvez définir vous-même la variable d'environnement JAVA_HOME.

Dans 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
 352
Author: Pablo Santa Cruz, 2011-01-13 14:28:52

Windows > Démarrer > cmd >

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

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

 118
Author: grokster, 2012-05-09 16:29:37

Dans Windows à l'invite de commande

where javac

 107
Author: NanoBennett, 2014-04-16 14:49:14

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

 31
Author: Ronen Rabinovici, 2013-10-24 21:24:50

Clair et simple sur les plates-formes Windows:

Où java

 28
Author: luccaa, 2014-01-25 16:33:52

Java installer 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éer un processus sans chemin complet, Windows les exécute en dernier recours s'ils sont manquants dans les dossiers %PATH%.

Vous pouvez rechercher toutes les versions de Java installées dans le registre. Jetez un oeil à HKLM \ SOFTWARE \ JavaSoft \ Java Runtime Environment et HKLM\SOFTWARE\Wow6432Node\JavaSoft \ Java Runtime Environment pour java 32 bits sur 64 bits Windows.

C'est ainsi que java lui-même découvre les différentes versions installées. Et c'est pourquoi les versions 32 bits et 64 bits peuvent coexister et fonctionnent correctement sans interférer.

 27
Author: Denis The Menace, 2012-02-01 10:48:39

Sur Windows 10, vous pouvez trouver le chemin en allant dans Panneau de configuration > Programmes > 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 d'exécution Java pour les applications et les applets Java.'

Cela devrait fonctionner sur Windows 7 et éventuellement d'autres versions récentes de Windows.

entrez la description de l'image ici

 19
Author: smartexpert, 2020-11-20 07:55:40

Le script batch ci-dessous imprimera le JRE par défaut existant. Il peut être facilement modifié pour trouver la version 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
 18
Author: munsingh, 2014-10-20 08:56:57

Sous Windows, vous pouvez utiliser

C:>dir /b /s java.exe

Pour imprimer le chemin complet de chaque "java.exe " sur votre lecteur C:, qu'ils se trouvent ou non sur votre variable d'environnement PATH.

 15
Author: Thomas Bender, 2015-11-24 17:03:38

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 à partir de:

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.

entrez la description de l'image ici

 13
Author: AndroidDev, 2014-12-25 18:15:17

Powershell un liner:

$p='HKLM:\SOFTWARE\JavaSoft\Java Development Kit'; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome
 11
Author: majkinetor, 2017-06-17 08:15:01

Plus sur Windows... la variable java.home n'est pas toujours le même emplacement que le binaire qui est exécuté.

Comme le dit Denis La Menace, l'installateur place les fichiers Java dans Program Files, mais aussi java.exe dans System32. Avec rien de Java lié sur le chemin java-version peut toujours fonctionner. Cependant, lorsque le programme de PeterMmm est exécuté, il signale la valeur de Program Files en tant que 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 java.exe binaire, ajoutez la ligne suivante au code de PeterMmm pour que le programme fonctionne plus longtemps:

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

Compilez-le et exécutez-le, puis recherchez l'emplacement du java.exe image. Par exemple, dans Windows 7, ouvrez le gestionnaire des tâches, recherchez le java.exe entrée, faites un clic droit et sélectionnez 'ouvrir l'emplacement du fichier' , cela ouvre l'emplacement exact du Java binaire. Dans ce cas, ce serait System32 .

 10
Author: Moika Turns, 2012-10-24 10:23:38

Exécutez ce programme à partir de la 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
Author: PeterMmm, 2011-01-13 14:42:56

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

 6
Author: sblundy, 2011-01-13 14:28:54

Exécutez simplement la commande set dans votre ligne de commande. Ensuite, vous voyez toutes les variables d'environnement que vous avez définies.

Ou si sur Unix vous pouvez le simplifier:

$ set | grep "JAVA_HOME" 
 5
Author: , 2011-01-13 14:31:54

Ceci est spécifique au système d'exploitation. Sous Unix:

which java

Affiche 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
Author: Michael Borgwardt, 2011-01-13 14:30:45

Dans Windows PowerShell, vous pouvez utiliser la fonction Get-Command pour voir où Java est installé:

Get-Command -All java

Ou

gcm -All java

La partie -All s'assure d'afficher tous les endroits où elle apparaît dans la recherche de chemin. Ci-dessous est un exemple de sortie.

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
 3
Author: Scott H, 2020-11-09 17:32:38

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

Sur Ubuntu pour openjdk1.8.0, c'est 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 construisez des fichiers source JNI. Bien que true which java fournisse le chemin binaire, ce n'est pas le vrai JDK home.

 2
Author: EntangledLoops, 2016-11-04 15:00:21

Sur macOS, exécutez:

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 imprime:

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

Notez que l'exécution de {[3] } n'affiche pas l'emplacement JDK, car la commande java fait plutôt partie de JavaVM.framework , qui encapsule le vrai 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
Author: jameshfisher, 2018-01-18 13:58:36

Dans Windows cmd:

set "JAVA_HOME" 
 0
Author: Husam, 2014-12-25 17:42:20
#!/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 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

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

 0
Author: Qian Chen, 2015-06-10 17:14:01

J'ai amélioré la réponse demunsingh 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
Author: JohnP2, 2018-03-28 17:51:23

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
Author: Rudixx, 2019-03-26 23:23:06

Peut-être que les méthodes ci-dessus fonctionnent... J'en ai essayé et je ne l'ai pas fait pour moi. Ce qui a fait était ceci:

Exécutez ceci dans le terminal :

/usr/libexec/java_home
 0
Author: Mudit Verma, 2020-10-17 03:13:50