我怎样才能检查我的操作系统使用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位
os.arch不是操作系统的位,提防这个解决scheme! http://mark.koli.ch/2009/10/javas-osarch-system-property-is-the-bitness-of-the-jre-not-the-operating-system.html
没有获得plattform具体没有办法做到这一点。 看看这个页面上的最后一个post(解决scheme有plattform特定)。
属性os.name
给你使用的操作系统的名称, os.version
版本。
你可以通过打电话来检查
System.getProperty("sun.arch.data.model");
该行返回32或64,标识JVM是32位还是64位。