it-swarm.dev

Como faço para encontrar onde o JDK está instalado na minha máquina Windows?

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

Na execução Java -version em cmd , mostra a versão como '1.6.xx'. Para encontrar a localização deste SDK em minha máquina, tentei usar echo %Java_HOME%, mas ele está mostrando apenas 'Java_HOME' (como não há var var 'Java_PATH' em minhas variáveis ​​de ambiente).

264
Ashine

Se você estiver usando Linux/Unix/Mac OS X:

Tente isto:

$ which Java

Deve produzir a localização exata.

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

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 você estiver usando o Windows:

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

Windows> Iniciar> cmd>

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

Se você tiver um JDK instalado, o caminho será exibido,
por exemplo: C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe

99
grokster

No Windows, no prompt de comando

where javac

80
NanoBennett

O instalador do Java coloca vários arquivos na pasta% WinDir%\System32 (Java.exe, javaws.exe e alguns outros). Quando você digita Java.exe na linha de comando ou cria um processo sem caminho completo, o Windows o executa como último recurso se estiver faltando nas pastas% PATH%.

Você pode procurar todas as versões do Java instaladas no registro. Dê uma olhada no HKLM\SOFTWARE\JavaSoft\Java Runtime Environment e no HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment para Java de 32 bits no Windows de 64 bits.

É assim que o próprio Java descobre diferentes versões instaladas. E é por isso que a versão de 32 bits e 64 bits pode coexistir e funciona bem sem interferir.

26
Denis The Menace

Nas janelas, o padrão é: C:\Program Files\Java\jdk1.6.0_14 (onde os números podem diferir, como são a versão).

25
Ronen Rabinovici

Simples e simples em plataformas Windows:

onde Java

21
luccaa

O script de lote abaixo imprimirá o JRE padrão existente. Ele pode ser facilmente modificado para encontrar a versão do JDK instalada, substituindo o Java Runtime Environment por 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

Em um prompt do Windows Prompt, basta digitar:

set Java_home

Ou, se você não gosta do ambiente de comando, pode verificá-lo de:

Menu Iniciar> Computador> Propriedades do Sistema> Propriedades Avançadas do Sistema. Em seguida, abra a guia Avançado> Variáveis ​​de ambiente e, na variável do sistema, tente localizar Java_HOME.

enter image description here

11
AndroidDev

No Windows 10, você pode descobrir o caminho indo ao Painel de Controle> Java. No painel que aparece, você pode encontrar o caminho conforme demonstrado na captura de tela abaixo. No Painel de Controle Java, vá para a guia 'Java' e, em seguida, clique no botão 'Visualizar' na descrição 'Visualizar e gerenciar versões e configurações do Java Runtime para aplicativos e applets Java'.

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

 enter image description here

10
smartexpert

Mais no Windows ... variável Java.home nem sempre é o mesmo local que o binário que é executado.

Como diz Denis The Menace, o instalador coloca os arquivos Java em Program Files , mas também Java.exe into System32 . Com nada Java relacionado no caminho Java -version ainda pode funcionar. No entanto, quando o programa PeterMmm é executado, ele relata o valor de Program Files as Java.home , isso não está errado (o Java está instalado) mas o binário real sendo executado está localizado em System32 .

Uma maneira de procurar o local do Java.exe binary, adicione a seguinte linha ao código do PeterMmm para manter o programa em execução por mais tempo:

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

Compile e execute-o e, em seguida, procure a localização do Java.exe image. Por exemplo. no Windows 7 abra o gerenciador de tarefas, localize o Java.exe entry, clique com o botão direito e selecione 'open file location', isso abre o local exato do binário Java. Nesse caso, seria System32 .

10
Moika Turns

No Windows, você pode usar

C:>dir /b /s Java.exe

para imprimir o caminho completo de todos e cada "Java.exe" em sua unidade C :, independentemente de eles estarem na sua variável de ambiente PATH.

9
Thomas Bender

Execute este programa a partir da linha de 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
PeterMmm

Powershell um forro:

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

Você tentou ver sua variável% PATH%. Isso é o que o Windows usa para encontrar qualquer executável.

5
sblundy

Apenas execute o comando set na sua linha de comando. Então você vê todas as variáveis ​​de ambiente que você definiu.

Ou se no Unix você pode simplificá-lo:

$ set | grep "Java_HOME" 
5
anon

Isso é específico do sistema operacional. No Unix:

which Java

irá exibir o caminho para o executável. Eu não sei de um equivalente do Windows, mas normalmente você tem a pasta bin da instalação do JDK no sistema PATH:

echo %PATH%
3
Michael Borgwardt

Nenhuma destas respostas estão corretas para o Linux se você estiver procurando pela casa que inclui os subdiretórios, tais como: bin, docs, include, jre, lib, etc.

No Ubuntu para openjdk1.8.0, isso é em: /usr/lib/jvm/Java-1.8.0-openjdk-AMD64

e você pode preferir usar isso para Java_HOME, já que você poderá encontrar cabeçalhos se você construir arquivos fonte JNI. Embora seja verdade, which Java fornecerá o caminho binário, não é o verdadeiro JDK home.

2
EntangledLoops

No macOS, execute:

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

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

Note que executar which Java não mostra a localização do JDK, porque o comando Java é parte de JavaVM.framework, que envolve o JDK real:

$ 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

Para 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

Este link pode ajudar a explicar como encontrar o Java executável a partir do bash: http://srcode.org/2014/05/07/detect-Java-executable/

0
Elgs Qian Chen

Script para Windows 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
Rudixx

no Windows cmd:

set "Java_HOME" 
0
Husam

Eu melhorei a resposta de munsingh acima testando a chave de registro em registros 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 acesso ao registro de 64 bits

0
JohnP2