2012-06-16 28 views
30

Acabo de instalar Java JDK 6u33 en Windows XP. Aunque no configuré la variable de entorno PATH, puedo ejecutar java -version en el símbolo del sistema.¿Cuál es la diferencia entre "system32 java.exe" y "Program Files Java jdk1.6.0_33 bin java.exe"?

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

Cuando compruebo mi PC, he encontrado que hay 2 java.exe:
1. C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
2. C:\WINDOWS\system32\java.exe

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

¿Debo agregar C:\Program Files\Java\jdk1.6.0_33\bin\ en la variable de entorno PATH?

Respuesta

26

Configurando la variable PATH es solo para que pueda obtener acceso a javac y los otros programas y herramientas en la carpeta jdk bin.

se proporciona el java.exe en \windows\system32\ de manera que no todo el mundo necesita para establecer una variable PATH sólo para ejecutar un programa Java (desde la línea de comandos) y selecciona una versión (la última instalado parece) del Java instaladas máquinas virtuales (JVM) si hay más de una (pública) instalada.

Ver este enlace para más información:

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

Cita:

Para complicar las cosas aún más la java.exe en system32 es sólo un maniquí. Se ve en el registro y luego decide qué java.exe real usar. La última JVM instalada llega a ser la utilizada, incluso si es anterior. Para cambiar las JVM, normalmente debe volver a instalar la que desee.

+11

No es un "java.exe" ficticio y no necesita reinstalar, simplemente pase la versión requerida con el parámetro -version como 'java -version:" 1.6 "MyClass' para forzar el 1.6 JRE en una estación de trabajo con la versión múltiple instalada (ver http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java).html) – RealHowTo

+2

Es cierto que puede omitir la necesidad de reinstalar el curso * si * lo pasa parámetros de línea de comando, y también puede especificar la ruta completa al tiempo de ejecución java (java.exe, javaw.exe o javaws) .exe). Sin embargo, tampoco es muy "magia automática" para la mayoría de los usuarios. –

10

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

En pocas palabras, si tiene 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 presentarán con C: \ Windows \ SysWoW64 \ enmascarado como C: \ Windows \ System32. El instalador no puede colocar una copia de java.exe en SysWoW64, por lo tanto, una aplicación de 32 bits que intente ejecutar Java no lo hará. Esto desconcertará al usuario si busca en el directorio system32 usando explorer, ya que explorer es una aplicación de 64 bits y verá el directorio system32 real.

+4

En un sistema de 64 bits, normalmente debe instalar las versiones de Java de 64 y 32 bits. –

+0

Tengo tal instalación, pero por ejemplo, 64 bits de Eclipse ejecuta Java de 32 bits, ¿alguna idea de por qué? Cuando ejecuto 'java -version', también devuelve la versión de 32 bits. ¿Es posible modificarlo para usar 64 bits principalmente? – Betlista

+0

Betlista, ¿tiene ambos JDK instalados? – Urhixidur

Cuestiones relacionadas