Estoy desarrollando una aplicación de software que verifica qué tipo de software tiene instalado, pero para poder hacerlo, debo saber si el sistema operativo es de 32 bits o de 64 bits. Intenté System.getProperty ("os.arch"); pero luego leí que este comando solo nos muestra el bit de JDK/JRE, no el sistema operativo en sí. Si pudiera decirme cómo saber qué sistema operativo se está usando (Windows 7, Mac OS, Ubuntu, etc.) sería simplemente increíble C:¿Cómo puedo verificar la bitidez de mi sistema operativo con Java? (J2SE, no os.arch)
Respuesta
System.getProperty("os.arch");
debería estar disponible en todas las plataformas, consulte la System Properties Tutorial de Java para obtener más información.
Pero Las plataformas Windows de 64 bits se ubicarán en la JVM si se trata de una JVM de 32 bits. En realidad, 64 bits de Windows dependerán de cualquier proceso de 32 bits sobre el entorno para ayudar a los viejos programas de 32 bits a funcionar correctamente en un sistema operativo de 64 bits. Lea el MSDN article about WOW64 para obtener más información.
Como resultado de WOW64, una JVM de 32 bits llamando a System.getProperty("os.arch")
devolverá "x86". Si desea obtener el verdadera arquitectura del sistema operativo subyacente en Windows, utilice la siguiente lógica:
String arch = System.getenv("PROCESSOR_ARCHITECTURE");
String wow64Arch = System.getenv("PROCESSOR_ARCHITEW6432");
String realArch = arch != null && arch.endsWith("64")
|| wow64Arch != null && wow64Arch.endsWith("64")
? "64" : "32";
Ver también:
Why %processor_architecture% always returns x86 instead of AMD64
Obtengo NPE en la línea realArch en mac osx :( – user2693017
Funciona mejor que nuestra implementación anterior. ¡Gracias! – CMerrill
Quiero disculparme, ¡todo este tiempo pensé que tenía su respuesta seleccionada como la respuesta correcta! Pero ya está hecha (: –
No hay forma de hacerlo sin tener que obtener una plataforma específica. Echa un vistazo a la última publicación en la página this (la solución es específica de la plataforma).
La propiedad os.name
le da el nombre del sistema operativo utilizado, os.version
la versión.
os.arch NO es la fragilidad del sistema operativo, ¡ten cuidado con esta solución! http://mark.koli.ch/2009/10/javas-osarch-system-property-is-the-bitness-of-the-jre-not-the-operating-system.html
Si bien esto podría responder teóricamente a la pregunta, [sería preferible] (// meta.stackoverflow.com/q/8259) incluir las partes esenciales de la respuesta aquí y proporciona el enlace para referencia. –
- 1. Java (J2SE) y Bluetooth
- 2. Bluetooth en java (J2SE)
- 3. Desarrollo de un sistema operativo
- 4. Biblioteca del sistema JRE de Eclipse [J2SE-1.5]
- 5. Cómo determinar la plataforma del sistema operativo con WMI?
- 6. Java VMs que no requieren un sistema operativo?
- 7. ¿Cómo puedo saber en qué dispositivos/versiones de sistema operativo se está ejecutando mi aplicación iOS?
- 8. ¿Cómo incluyo diferentes encabezados basados en mi sistema operativo?
- 9. ¿Cómo puedo reemplazar el calendario predeterminado del sistema operativo Android?
- 10. ¿Cómo puede mi código Java leer variables de entorno del sistema operativo?
- 11. Obtener el tamaño de la memoria del sistema operativo Java
- 12. ¿Cómo se lee 'List separator' del sistema operativo en Java?
- 13. Cómo crear código QR usando Java (J2SE)
- 14. ¿Cómo puedo detectar el sistema operativo en Perl?
- 15. Cómo determinar el sistema operativo
- 16. Detectar el sistema operativo
- 17. ¿Cómo puedo verificar la versión del sistema de Android?
- 18. ¿Cómo puedo determinar el sistema operativo del sistema desde un script Lua?
- 19. Xcode no reconoce mi dispositivo después de la actualización del sistema operativo
- 20. Portando NewLib para mi sistema operativo: algunas preguntas
- 21. ¿Dónde puedo encontrar la primera versión del sistema operativo Linux?
- 22. ¿Cómo puedo cambiar las unidades usando el sistema operativo python?
- 23. ¿Cómo probar la confiabilidad de mi propio (pequeño) sistema operativo incorporado?
- 24. Determine el sistema operativo en .vimrc
- 25. ¿Cómo puedo encontrar en qué sistema operativo se está ejecutando mi programa Ruby?
- 26. ¿Cómo detectar el sistema operativo en ejecución?
- 27. Detectar sistema operativo en Clojure
- 28. ¿Cómo puedo encontrar el sistema operativo actual en Python?
- 29. Sistema operativo de espacio aislado
- 30. ¿Cómo verificar Delphi la versión del sistema operativo? Windows 7 o Server 2008 R2?
Bueno, sí, eso es lo que pensé, pero luego vi este enlace, mi ght quiere comprobarlo: http://mark.koli.ch/2009/10/javas-osarch-system-property-is-the-bitness-of-the-jre-not-the-operating-system.html dime lo que piensas –
Quizás quieras aceptar una respuesta alternativa. – assylias