No se puede instalar Java 32 bit en Windows 7 64 bit

1

Estoy descargando la versión java de 32 bits, de Java.com, http://java.com/en/download/manual.jsp . Se guarda como

jre-6u27-windows-i586-s

Sin embargo, cuando lo instalo, en su lugar se instala la versión de 64 bits (??) . No hay javaw.exe en la carpeta / System32, pero sí en la carpeta SysWOW64.

Nunca he tenido este problema antes. ¿Qué hacer? Necesito esto para programas java de 32 bits.

Bretddog
fuente
¿Qué obtienes cuando vas a CMD y escribes java -version?
AndrejaKo
@AndrejaKo; Necesito ir a la carpeta \ SysWOW64, luego se muestra (Java SE Runtime Environment build 1.6.0_27-b07) y (Java Hotspot Client VM build 20.2-b06, modo mixto, uso compartido). Y de acuerdo con esta prueba: java.com/en/download/testjava.jsp , dice Arquitectura x86.
Bretddog
1
"Necesito esto para programas Java de 32 bits": no existe tal cosa (a menos que use JNI). "Un programa Java compilado puede ejecutarse en una máquina virtual Java de 32 o 64 bits sin modificación. Las longitudes y la precisión de todos los tipos integrados están especificadas por el estándar y no dependen de la arquitectura subyacente. - oracle.com/technetwork / java /… y stackoverflow.com/questions/783662/…
RedGrittyBrick
@ Red: Claro, eso es lógico. Aunque me aconsejaron usar la versión de 32 bits para un programa específico, no sé qué impacto tiene. Aunque todavía existe el problema de que System32 / javaw.exe no existe y, por lo tanto, los programas que lo hacen referencia no encuentran nada.
Bretddog

Respuestas:

3

Eso es exactamente donde pertenece. De la página de Wikipedia WoW64 :

El sistema operativo utiliza el directorio% SystemRoot% \ system32 para su biblioteca de 64 bits y sus archivos ejecutables. Esto se hace por razones de compatibilidad con versiones anteriores, ya que muchas aplicaciones heredadas están codificadas para usar esa ruta. Al ejecutar aplicaciones de 32 bits, WoW64 redirige de forma transparente las DLL de 32 bits a% SystemRoot% \ SysWOW64, que contiene bibliotecas y ejecutables de 32 bits. Las aplicaciones de 32 bits generalmente no son conscientes de que se ejecutan en un sistema operativo de 64 bits. Las aplicaciones de 32 bits pueden acceder a% SystemRoot% \ System32 a través del pseudo directorio% SystemRoot% \ sysnative.

Hand-E-Food
fuente
Gracias, eso lo hizo un poco más claro! Pero un programa que haga referencia a /System32/javaw.exe en su enlace de destino simplemente no se iniciará. ¿Es este el comportamiento correcto? No veo ninguna redirección sucediendo.
Bretddog
Prefacio esto diciendo que no conozco bien Java. Si instala la versión de Java de 64 bits, debería ejecutarse correctamente porque estará en C: \ Windows \ System32. A menos que el código Java llame a DLL de 32 bits, debe compilarse y ejecutarse bien en un entorno de 64 bits.
Hand-E-Food
Bueno, esto es lo extraño que noté en mi pregunta: no hay archivos java en / System32. Sin embargo, creo que he instalado 32 bits, al menos según la prueba aquí, dice x86 java.com/en/download/testjava.jsp Pero los archivos java están en la carpeta SysWOW64.
bretddog
Sí. En un sistema operativo de 64 bits, Java de 32 bits se instala en \ SysWOW64 y Java de 64 bits se instala en \ System32. En un sistema operativo de 32 bits, Java de 32 bits se instala en \ System32 y Java de 64 bits no se instala. Use la versión que se adapte al sistema operativo y debería funcionar para usted.
Hand-E-Food
1

¿Por qué los dlls de 64 bits van a System32 y los dlls de 32 bits a SysWoW64 en Windows de 64 bits?

Según tengo entendido, en un sistema Windows de 64 bits, System32 está reservado para archivos binarios de 64 bits. Por lo tanto, sería un error colocar un binario javaw.exe de 32 bits allí.

Los programas que necesitan invocar programas Java realmente no deberían tener la ubicación de javaw.exe codificada en ellos, deberían confiar en la RUTA.

¿Cómo ejecutar un programa Java desde C #?

RedGrittyBrick
fuente