Come faccio a trovare dove è installato JDK sul mio computer Windows?


Ho bisogno di sapere dove si trova JDK sulla mia macchina.

In esecuzione Java -versionin cmd, mostra la versione come '1.6.xx". Per trovare la posizione di questo SDK sulla mia macchina ho provato a usare echo %JAVA_HOME% ma mostra solo 'JAVA_HOME' (poiché non esiste un var 'JAVA_PATH' impostato nelle mie variabili di ambiente).

Author: ROMANIA_engineer, 2011-01-13

24 answers

Se si utilizza Linux / Unix / Mac OS X:

Prova questo:

$ which java

Dovrebbe emettere la posizione esatta.

Dopo di che, è possibile impostare JAVA_HOME variabile di ambiente da soli.

In risorse del computer (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

Se si utilizza Windows:

c:\> for %i in (java.exe) do @echo.   %~$PATH:i
 352
Author: Pablo Santa Cruz, 2011-01-13 14:28:52

Finestre > Avvio > cmd >

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

Se è installato un JDK, viene visualizzato il Percorso,
ad esempio: C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe

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

In Windows al prompt dei comandi

where javac

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

In Windows il valore predefinito è: C:\Program Files\Java\jdk1.6.0_14 (dove i numeri possono differire, poiché sono la versione).

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

Semplice e semplice su piattaforme Windows:

Dove java

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

Java installer inserisce diversi file nella cartella %WinDir%\System32 (java.exe, javaws.exe e alcuni altri). Quando si digita java.exe nella riga di comando o crea processo senza percorso completo, Windows li esegue come ultima risorsa se mancano nelle cartelle % PATH%.

È possibile cercare tutte le versioni di Java installate nel registro di sistema. Dai un'occhiata a HKLM\SOFTWARE\JavaSoft \ Java Runtime Environment e HKLM \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment per java a 32 bit su 64 bit Windows.

Questo è il modo in cui java stesso scopre diverse versioni installate. Ed è per questo che sia la versione a 32 bit che quella a 64 bit possono coesistere e funzionare bene senza interferire.

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

Su Windows 10 è possibile trovare il percorso andando su Pannello di controllo > Programmi > Java. Nel pannello che si presenta, è possibile trovare il percorso come dimostrato nello screenshot qui sotto. Nel pannello di controllo Java, vai alla scheda ' Java 'e quindi fai clic sul pulsante' Visualizza 'sotto la descrizione' Visualizza e gestisci versioni e impostazioni di runtime Java per applicazioni e applet Java.'

Questo dovrebbe funzionare su Windows 7 e possibilmente altre versioni recenti di Windows.

inserisci qui la descrizione dell'immagine

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

Lo script batch sottostante stamperà il JRE predefinito esistente. Può essere facilmente modificato per trovare la versione JDK installata sostituendo Java Runtime Environment con 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

In Windows, è possibile utilizzare

C:>dir /b /s java.exe

Per stampare il percorso completo di ogni " java.exe " sul tuo C: drive, indipendentemente dal fatto che siano sulla tua variabile d'ambiente PATH.

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

In un prompt dei comandi di Windows, basta digitare:

set java_home

Oppure, se non ti piace l'ambiente dei comandi, puoi controllarlo da:

Menu Start > Computer > Proprietà del sistema > Proprietà avanzate del sistema. Quindi apri la scheda Avanzate > Variabili d'ambiente e nella variabile di sistema prova a trovare JAVA_HOME.

inserisci qui la descrizione dell'immagine

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

Powershell una fodera:

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

Più su Windows... variabile java.home non è sempre la stessa posizione del binario che viene eseguito.

Come dice Denis The Menace, il programma di installazione inserisce i file Java in Programmi, ma anche java.exe in System32 . Con nulla di Java correlato sul percorso java-version può ancora funzionare. Tuttavia, quando viene eseguito il programma di PeterMmm, riporta il valore di Program Files come java.home, questo non è sbagliato (Java è installato lì) ma il binario effettivo in esecuzione si trova in System32 .

Un modo per dare la caccia alla posizione del java.exe binario, aggiungere la seguente riga al codice di PeterMmm per mantenere il programma in esecuzione un po ' di più:

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

Compilare ed eseguirlo, quindi cercare la posizione del java.immagine exe . Ad esempio in Windows 7 aprire il task manager, trovare java.exe voce, fare clic destro e selezionare 'open file location', questo apre la posizione esatta del Java binario. In questo caso sarebbe System32.

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

Eseguire questo programma da riga di comando:

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

Hai provato a guardare la variabile %PATH%. Questo è ciò che Windows usa per trovare qualsiasi eseguibile.

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

Basta eseguire il comando set nella riga di comando. Quindi vedi tutte le variabili di ambiente che hai impostato.

O se su Unix puoi semplificarlo:

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

Questo è specifico del sistema operativo. Su Unix:

which java

Mostrerà il percorso dell'eseguibile. Non conosco un equivalente di Windows, ma in genere si ha la cartella bin dell'installazione JDK nel sistema PATH:

echo %PATH%
 3
Author: Michael Borgwardt, 2011-01-13 14:30:45

In Windows PowerShell è possibile utilizzare la funzione Get-Command per vedere dove è installato Java:

Get-Command -All java

O

gcm -All java

La parte -All fa in modo di mostrare tutti i punti in cui appare nella ricerca del percorso. Di seguito è riportato un esempio di output.

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

Nessuna di queste risposte è corretta per Linux se stai cercando la home che include i sottodiretti come: bin, docs, include, jre, lib, ecc.

Su Ubuntu per openjdk1. 8. 0, questo è in: /usr/lib/jvm/java-1.8.0-openjdk-amd64

E potresti preferire usarlo per JAVA_HOME poiché sarai in grado di trovare le intestazioni se costruisci i file sorgente JNI. Mentre è vero which java fornirà il percorso binario, non è la vera casa JDK.

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

Su macOS, eseguire:

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

Sulla mia macchina, questo stampa:

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

Si noti che l'esecuzione di which java non mostra la posizione JDK, perché il comando java è invece parte di JavaVM.framework, che avvolge il vero 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

In cmd di Windows:

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

Per 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

Questo link potrebbe aiutare a spiegare come trovare l'eseguibile java da bash: http://srcode.org/2014/05/07/detect-java-executable /

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

Ho migliorato la risposta di munsingh sopra testando la chiave di registro nei registri a 64 bit e 32 bit, se necessario:

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

Riferimento per l'accesso al registro a 64 bit

 0
Author: JohnP2, 2018-03-28 17:51:23

Script per finestre a 32/64 bit.

@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

Forse i metodi di cui sopra funzionano... Ho provato alcuni e non per me. Che cosa è stato questo:

Eseguire questo nel terminale:

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