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).
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
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
Dans Windows à l'invite de commande
where javac
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).
Clair et simple sur les plates-formes Windows:
Où java
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.
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.
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
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.
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.
Powershell un liner:
$p='HKLM:\SOFTWARE\JavaSoft\Java Development Kit'; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome
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 .
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
Avez-vous essayé de regarder votre variable %PATH%. C'est ce que Windows utilise pour trouver n'importe quel exécutable.
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"
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%
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
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.
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
Dans Windows cmd:
set "JAVA_HOME"
#!/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/
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%"
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
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