32 votos

¿Cuál es la diferencia entre "sistema32 \java.exe " y "Archivos de programa \Java\jdk1.6.0_33\bin\java.exe "?

Acabo de instalar Java JDK 6u33 en Windows XP. Aunque no he establecido la variable de entorno PATH, soy capaz de ejecutar java -version en la línea de comandos.

Cuando ejecute este comando for %i in (java.exe) do @echo. %~$PATH:i tengo esta salida: C:\WINDOWS\system32\java.exe

Cuando revisé mi PC, encontré que hay 2 java.exe:
1. C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
2. C:\WINDOWS\system32\java.exe

¿Puedo saber cuál es la diferencia entre system32\java.exe y Program Files\Java\jdk1.6.0_33\bin\java.exe ? ¿Por qué sólo system32\java.exe se muestra cuando corro for %i in (java.exe) do @echo. %~$PATH:i ?

¿Todavía tengo que añadir C:\Program Files\Java\jdk1.6.0_33\bin\ a mi variable de entorno PATH?

28voto

Mattias Puntos 5639

El ajuste de la PATH es sólo para que puedas tener acceso a javac y los otros programas y herramientas en la carpeta jdk bin.

El java.exe en \windows\system32\ se proporciona para que no todos necesiten establecer una variable PATH sólo para ejecutar un programa java (desde la línea de comandos) y selecciona una versión (la última que parece estar instalada) de las máquinas virtuales de Java instaladas (JVM) si hay más de una instalada (públicamente).

Vea este enlace para más información:

http://mindprod.com/jgloss/javaexe.html#MULTIPLES

Cita:

Para complicar aún más las cosas, el java.exe en system32 es sólo un maniquí. Busca en el registro y luego decide qué java.exe real usar. La última JVM instalada llega a ser la que se usa, aunque sea más antigua. Para cambiar de JVM, normalmente debe reinstalar la que quiera.

11voto

Urhixidur Puntos 405

(No una respuesta sino un comentario sobre la respuesta de Mattias) No estoy seguro de este negocio "tonto". El java.exe en system32 es un archivo normal, ni siquiera un enlace simbólico o duro. Mattias puede estar refiriéndose al problema que se explica aquí: http://msdn.microsoft.com/en-us/library/aa384187

En resumen, si tienes un sistema de 64 bits y una instalación de Java, las aplicaciones de 32 bits no verán el java.exe (ni javaw.exe, javaws.exe) que está instalado en C:\Windows\System32\ porque se les presentará C:\Windows\SysWoW64\ haciéndose pasar por C:\Windows\System32. El instalador falla al poner una copia de java.exe en SysWoW64, por lo que una aplicación de 32 bits que intente lanzar Java no lo hará. Esto desconcertará al usuario si mira en el directorio system32 usando explorador, ya que explorador es una aplicación de 64 bits y por lo tanto verá el directorio "real" system32.

0voto

Betlista Puntos 2944

(Esto tampoco es una respuesta, sino sólo un comentario para @RealHowTo comment)

Es bueno, que tengamos alguna referencia para -version pero según mi prueba no funciona como yo esperaba.

Instalé JDK (1.7.0_05) antes, pero después instalé la actualización de JRE (1.7.0_55).

c:\>set j
JAVA_HOME=c:\Java\jdk1.7.0_05

pero cuando intenté

c:\>java -version:"1.7.0_05"
Error: Unable to locate JRE meeting specification "1.7.0_05"

Por supuesto que hay JRE en la carpeta JDK (c: \Java\jdk1.7.0_05\jre\bin ) como de costumbre y funciona bien

c:\>c:\Java\jdk1.7.0_05\jre\bin\java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b06)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)

triste historia...

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X