Como é que descubro onde o JDK está instalado na minha máquina do windows?

preciso de saber onde está o JDK na minha máquina.

em execução {[[0]} em cmd , mostra a versão como '1.6.xx". Para encontrar a localização deste SDK na minha máquina eu tentei usar echo %JAVA_HOME% mas ele só está mostrando ' JAVA_HOME '(como não há nenhum' JAVA_PATH ' var definido em minhas variáveis de ambiente).

 327
Author: ROMANIA_engineer, 2011-01-13

24 answers

Se estiver a utilizar Linux / Unix / Mac OS X:

Tenta isto:

$ which java

Deve indicar a localização exacta.

Depois disso, você pode definir a variável de ambiente JAVA_HOME.

No meu computador (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 estiver a utilizar o Windows:

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

Janelas > início > cmd >

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

Se tiver um JDK instalado, a localização é mostrada,
por exemplo: C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe

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

Nas janelas na linha de comandos

where javac

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

No windows, o valor por omissão é: C:\Program Files\Java\jdk1.6.0_14 (onde os números podem ser diferentes, dado que são a versão).

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

Simples e simples nas plataformas Windows:

Em que java

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

O instalador de Java coloca vários ficheiros na pasta %WinDir % \System32 (java.exe, javaws.exe e alguns outros). Quando Digitas java.o exe na linha de comandos ou cria um processo sem a localização completa, o Windows executa-os como último recurso se não estiverem em %PATH% folders.

Pode procurar todas as versões de Java instaladas no registo. Dê uma olhada em HKLM\SOFTWARE\JavaSoft\Java Runtime Environment e HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment for 32-bit java on 64 bit Janela.

É assim que o próprio java descobre diferentes versões instaladas. E é por isso que ambas as versões 32-bit e 64-bit podem coexistir e funcionar bem sem interferir.

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

No Windows 10 você pode descobrir o caminho indo para o Painel De Controle > Programas > Java. No painel que aparece, você pode encontrar o caminho como demonstrado na imagem abaixo. No painel de Controle Java, vá para a página ' Java 'e, em seguida, clique no botão' View 'sob a descrição' View e gerencie versões e configurações de execução Java para aplicações e applets Java.'

Isto deve funcionar no Windows 7 e possivelmente em outras versões recentes do Windows.

enter image description here

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

O programa em lote abaixo irá imprimir o JRE predefinido existente. Ele pode ser facilmente modificado para encontrar a versão JDK instalada, substituindo o ambiente de execução Java por kit de desenvolvimento Java.

@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

Debaixo do Windows, pode usar

C:>dir /b /s java.exe

Para imprimir o caminho completo de cada java.exe " no seu C: drive, independentemente de estarem na sua variável de ambiente PATH.

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

Numa linha de comandos do Windows, basta escrever:

set java_home

Ou, se não gosta do ambiente de comandos, pode verificá-lo a partir de:

Menu Iniciar > Computador > Propriedades do sistema > Propriedades Avançadas do sistema. Em seguida, abrir tab > variáveis de ambiente avançado e em variável de Sistema tentar encontrar JAVA_HOME.

enter image description here

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

Powershell One 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

Mais nas janelas... variável java.o home nem sempre é a mesma localização do binário que é executado.

Como diz Denis, a ameaça, o instalador coloca ficheiros Java em ficheiros de Programas, mas também java.exe into System32 . Sem nada Java relacionado no path java-version ainda pode funcionar. No entanto, quando o programa do PeterMmm é executado, ele relata o valor de arquivos de Programa como java.home , isto não está errado (o Java está instalado lá) mas o binário real sendo executado está localizado em System32 .

Uma maneira de descobrir a localização do java.executável exe , Adicione a seguinte linha ao código do PeterMmm para manter o programa em execução durante mais algum tempo:
try{Thread.sleep(60000);}catch(Exception e) {}

Compile e execute-o, em seguida, procure a localização do java.exe imagem. Por exemplo, no Windows 7, abra o Gestor de Tarefas, encontre o java.o item exe , carregue com o botão direito e seleccione 'Abrir a localização do ficheiro', isto abre a localização exacta do Binário Java. Neste caso seria System32.

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

Execute este programa a partir da linha de comandos:

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

Já tentou ver a sua variável % PATH. É o que o Windows usa para encontrar qualquer executável.

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

Execute apenas o comando set na sua linha de comando. Então você vê todas as variáveis de ambientes que você definiu.

Ou se estiver no Unix pode simplificá-lo:

$ set | grep "JAVA_HOME" 
 5
Author: , 2011-01-13 14:31:54
Isto é específico para OS. Em Unix:
which java

Irá mostrar a localização do executável. Eu não sei de um equivalente Windows, mas lá você normalmente tem a pasta bin da instalação JDK no sistema PATH:

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

No Windows PowerShell você pode usar a função Get-Command para ver onde o Java está instalado:

Get-Command -All java

Ou

gcm -All java

A parte -All certifica-se de mostrar todos os locais que aparece na pesquisa do caminho. Abaixo está o exemplo de saída.

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

Nenhuma destas respostas está correta para o Linux se você está procurando a casa que inclui os subdirs como: bin, docs, include, jre, lib, etc.

Em Ubuntu para openjdk1. 8. 0, isto está em: /usr/lib/jvm/java-1.8.0-openjdk-amd64

E você pode preferir usar isso para JAVA_HOME uma vez que você será capaz de encontrar cabeçalhos se você criar arquivos de código JNI. Embora seja verdade which java irá fornecer o caminho binário,não é a verdadeira casa JDK.

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

Em macOS, corra:

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
Na minha máquina, isto imprime:
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home

Note que a execução which java não mostra a localização do JDK, porque o comando java é em vez de fazer parte de JavaVM.framework, que envolve o verdadeiro 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

No 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

Para as janelas:

@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

Esta ligação pode ajudar a explicar como encontrar o executável java do bash: http://srcode.org/2014/05/07/detect-java-executable/

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

Melhorei a resposta de munsingh testando a chave do registo nos registos de 64 bits e 32 bits, se necessário:

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

Referência para o acesso ao registo de 64 bits

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

Programa para Janelas de 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
Talvez os métodos acima funcionem... Experimentei e não o fiz por mim. O que aconteceu foi isto:

Execute isto no terminal:

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