我怎样才能检查我的操作系统使用Java的位? (J2SE,不是os.arch)

我正在开发一个软件应用程序来检查你已经安装了哪种软件,但是为了做到这一点,我必须知道操作系统是32位还是64位的操作系统。 我试过System.getProperty(“os.arch”); 但是后来我看到这个命令只显示了JDK / JRE的位数,而不是操作系统本身。 如果你能告诉我如何知道什么样的操作系统正在被使用(Windows 7,Mac OS,Ubuntu等),那简直太棒了C:

System.getProperty("os.arch"); 

应在所有平台上提供,请参阅Java 系统属性教程以获取更多信息。

但是如果是32位的JVM,那么64位的Windows平台就会存在于JVM中。 实际上,64位的Windows将隐藏在任何有关环境的32位进程中,以帮助旧的32位程序在64位操作系统上正常工作。 阅读有关WOW64的MSDN文章以获取更多信息。

由于System.getProperty("os.arch")位调用System.getProperty("os.arch") JVM将返回“x86”。 如果您想在Windows上获得底层操作系统的真实体系结构,请使用以下逻辑:

 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"; 

也可以看看:

HOWTO:检测进程比特率

为什么%processor_architecture%总是返回x86而不是AMD64

检测当前的Windows版本是32位还是64位

没有获得plattform具体没有办法做到这一点。 看看这个页面上的最后一个post(解决scheme有plattform特定)。

属性os.name给你使用的操作系统的名称, os.version版本。

你可以通过打电话来检查

 System.getProperty("sun.arch.data.model"); 

该行返回32或64,标识JVM是32位还是64位。