tengo - donde esta instalado java
¿Cómo encuentro dónde está instalado JDK en mi máquina con Windows? (21)
Necesito saber dónde se encuentra JDK en mi máquina.
Al ejecutar Java -version
en cmd , muestra la versión como ''1.6.xx''. Para encontrar la ubicación de este SDK en mi máquina, intenté usar echo %JAVA_HOME%
pero solo muestra ''JAVA_HOME'' (ya que no hay ninguna variable ''JAVA_PATH'' en mis variables de entorno).
¿Has intentado mirar tu variable% PATH%? Eso es lo que usa Windows para encontrar cualquier ejecutable.
Bajo Windows, puedes usar
C:>dir /b /s java.exe
para imprimir la ruta completa de todos y cada uno de los "java.exe" en su unidad C: sin importar si están en su variable de entorno PATH.
Ejecute este programa desde la línea 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
El instalador de Java coloca varios archivos en la carpeta% WinDir% / System32 (java.exe, javaws.exe y algunos otros). Cuando escribe java.exe en la línea de comandos o crea un proceso sin una ruta completa, Windows los ejecuta como último recurso si faltan en las carpetas% PATH%.
Puede buscar todas las versiones de Java instaladas en el registro. Eche un vistazo a HKLM / SOFTWARE / JavaSoft / Java Runtime Environment y HKLM / SOFTWARE / Wow6432Node / JavaSoft / Java Runtime Environment para Java de 32 bits en Windows de 64 bits.
Así es como el propio Java encuentra diferentes versiones instaladas. Y es por eso que tanto la versión de 32 bits como la de 64 bits pueden coexistir y funcionan bien sin interferir.
El siguiente script por lotes imprimirá el JRE predeterminado existente. Se puede modificar fácilmente para encontrar la versión de JDK instalada reemplazando 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
En Windows 10 puede encontrar la ruta en Panel de control> Java. En el panel que aparece, puede encontrar la ruta como se muestra en la captura de pantalla a continuación. En el Panel de control de Java, vaya a la pestaña ''Java'' y luego haga clic en el botón ''Ver'' en la descripción ''Ver y administrar las versiones y configuraciones de Java Runtime para aplicaciones y applets de Java''.
Esto debería funcionar en Windows 7 y posiblemente en otras versiones recientes de Windows.
En Windows en el símbolo del sistema
where javac
En Windows, el valor predeterminado es: C:/Program Files/Java/jdk1.6.0_14
(donde los números pueden diferir, ya que son la versión).
En macOS, ejecute:
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
En mi máquina, esto imprime:
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
Tenga en cuenta que ejecutar which java
no muestra la ubicación de JDK, porque el comando java
es parte de JavaVM.framework
, que envuelve el 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
En un símbolo del sistema de Windows, simplemente escriba:
set java_home
O, si no te gusta el entorno de comando, puedes verificarlo desde:
Menú Inicio> Computadora> Propiedades del sistema> Propiedades avanzadas del sistema. Luego abra la pestaña Avanzado> Variables de entorno y en la variable del sistema intente encontrar JAVA_HOME.
Esto es específico del sistema operativo. En Unix:
which java
mostrará la ruta al ejecutable. No conozco un equivalente de Windows, pero normalmente tiene la carpeta bin
de la instalación de JDK en el sistema PATH
:
echo %PATH%
He mejorado la respuesta de share anterior al probar la clave de registro en registros de 64 y 32 bits, si es necesario:
::- 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%"
Referencia para acceder al registro de 64 bits.
Más en Windows ... la variable java.home no siempre es la misma ubicación que el binario que se ejecuta.
Como dice Denis The Menace, el instalador coloca archivos Java en Archivos de programa , pero también java.exe en System32 . Sin nada relacionado con Java en la ruta java -version todavía puede funcionar. Sin embargo, cuando se ejecuta el programa de PeterMmm, informa del valor de los Archivos de programa como java.home , esto no es incorrecto (Java está instalado allí) pero el binario real que se está ejecutando se encuentra en System32 .
Una forma de buscar la ubicación del binario java.exe , agregue la siguiente línea al código de PeterMmm para que el programa siga funcionando un poco más:
try{Thread.sleep(60000);}catch(Exception e) {}
Compile y ejecútelo, luego busque la ubicación de la imagen java.exe . Por ejemplo, en Windows 7, abra el administrador de tareas, busque la entrada java.exe , haga clic con el botón derecho y seleccione ''abrir ubicación de archivo'', esto abre la ubicación exacta del binario de Java. En este caso sería System32 .
Ninguna de estas respuestas es correcta para Linux si está buscando un hogar que incluya los subdirectorios como: bin, docs, include, jre, lib, etc.
En Ubuntu para openjdk1.8.0, esto está en: /usr/lib/jvm/java-1.8.0-openjdk-amd64
y es posible que prefieras usarlo para JAVA_HOME
ya que podrás encontrar encabezados si compilas archivos de origen JNI. Si bien es cierto which java
proporcionará la ruta binaria, no es el verdadero hogar JDK.
Powershell un forro:
$p=''HKLM:/SOFTWARE/JavaSoft/Java Development Kit''; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome
Si está utilizando Linux / Unix / Mac OS X:
Prueba esto:
$ which java
Debe salir la ubicación exacta.
Después de eso, puede establecer la variable de entorno JAVA_HOME
usted mismo.
En mi computadora (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 está utilizando Windows:
c:/> for %i in (java.exe) do @echo. %~$PATH:i
Simple y sencillo en plataformas Windows:
donde java
Simplemente ejecuta el comando set
en tu línea de comando. Luego ves todas las variables de entorno que has establecido.
O si en Unix puedes simplificarlo:
$ set | grep "JAVA_HOME"
Windows> Inicio> cmd>
C:> for %i in (javac.exe) do @echo. %~$PATH:i
Si tiene un JDK instalado, se muestra la Ruta,
por ejemplo: C:/Program Files/Java/jdk1.6.0_30/bin/javac.exe
en 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
Para ventanas:
@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 enlace puede ayudar a explicar cómo encontrar el ejecutable java desde bash: http://srcode.org/2014/05/07/detect-java-executable/