2009-03-23 15 views

Respuesta

44

Sí - sólo prevé explícitamente la ruta a JAVA.EXE. Por ejemplo:

c:\Users\Jon\Test>"c:\Program Files\java\jdk1.6.0_03\bin\java.exe" -version 
java version "1.6.0_03" 
Java(TM) SE Runtime Environment (build 1.6.0_03-b05) 
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing) 

c:\Users\Jon\Test>"c:\Program Files\java\jdk1.6.0_12\bin\java.exe" -version 
java version "1.6.0_12" 
Java(TM) SE Runtime Environment (build 1.6.0_12-b04) 
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing) 

La forma más sencilla de hacer esto por un intérprete de comandos correr es algo así como:

set PATH=c:\Program Files\Java\jdk1.6.0_03\bin;%PATH% 

Por ejemplo, he aquí una sesión completa mostrando mi defecto JVM, entonces el cambio a la ruta , entonces el nuevo:

c:\Users\Jon\Test>java -version 
java version "1.6.0_12" 
Java(TM) SE Runtime Environment (build 1.6.0_12-b04) 
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing) 

c:\Users\Jon\Test>set PATH=c:\Program Files\Java\jdk1.6.0_03\bin;%PATH% 

c:\Users\Jon\Test>java -version 
java version "1.6.0_03" 
Java(TM) SE Runtime Environment (build 1.6.0_03-b05) 
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing) 

Esto no cambiará los programas que explícitamente usan JAVA_HOME.

Tenga en cuenta que si obtiene el directorio incorrecto en la ruta, incluido uno que no existe, no obtendrá ningún error, simplemente se ignorará.

+1

Guau, este es un lanzamiento definitivo. Estaba a punto de publicar aproximadamente las primeras dos líneas de tu respuesta cuando apareció la notificación. –

+0

@Jon Skeet ¿Cómo puedo hacer esto en un programa Java? Quiero ejecutar .jar usando un JRE de 32 bits, ¿puedo establecer la ruta JRE para el nuevo proceso a partir del código Java? –

+0

@Utku: Bueno, cuando creas un proceso, puedes pasar la ruta completa al ejecutable ... –

2

Debería poder hacer esto a través de los argumentos de línea de comando, asumiendo que estas son máquinas virtuales de Sun instaladas utilizando los mecanismos usuales de Windows InstallShield con el buscador JVM EXE en system32.

Tipo java -ayuda para las opciones. En particular, consulte:

-version:<value> 
       require the specified version to run 
-jre-restrict-search | -jre-no-restrict-search 
       include/exclude user private JREs in the version search 
+0

+1, se requiere 1.6 de java – RealHowTo

0

sí A menudo necesito tener 3 o más JVM instaladas. Por ejemplo, he notado que a veces el JRE es ligeramente diferente a la versión JDK del JRE.

mi ir a solución en Windows para un poco de 'envase' es algo como esto:

@echo off 
setlocal 
@rem _________________________ 
@rem 
@set JAVA_HOME=b:\lang\java\jdk\v1.6\u45\x64\jre 
@rem 
@set JAVA_EXE=%JAVA_HOME%\bin\java 
@set VER=test 
@set WRK=%~d0%~p0%VER% 
@rem 
@pushd %WRK% 
cd 
@echo. 
@echo %JAVA_EXE% -jar %WRK%\openmrs-standalone.jar 
     %JAVA_EXE% -jar %WRK%\openmrs-standalone.jar 
@rem 
@rem _________________________ 
popd 
endlocal 
@exit /b 

Creo que es sencillo. Lo principal es que setlocal y endlocal le dan a su aplicación un "entorno personal" por lo que sea que haga, incluso si hay otros programas para ejecutar.

0

Pruebe con esto con Linux

sudo update-alternatives --config java 
1

Si usted tiene 2 instalaciones de la JVM. Coloque la versión por adelantado. Linux: export PATH =/usr/lib/jvm/java-8-oracle/bin: $ PATH

Esto elimina la ambigüedad.

Cuestiones relacionadas