请教 Java 如何判断操作系统是32位还是64位?

Macrotea 发布于 2012/12/18 16:17
阅读 13K+
收藏 3

请教 Java 如何判断操作系统是32位还是64位?

如下方式不符合:

1.仅仅获得jdk的位数:

String jdkBit = System.getProperty("sun.arch.data.model");
System.out.println(jdkBit);

2.我是64位系统, 如下语句打印: x86

System.out.println(System.getProperty("os.arch"));

路过高人,请不吝赐教~~~


加载中
0
Macrotea
Macrotea

引用来自“妖魔舞”的答案

Java 没仔细想过,给你个C++的参考

http://www.cppblog.com/mymsdn/archive/2010/09/06/125966.html

c++不太懂喔

感谢指导

0
Macrotea
Macrotea

引用来自“Macrotea”的答案

引用来自“妖魔舞”的答案

Java 没仔细想过,给你个C++的参考

http://www.cppblog.com/mymsdn/archive/2010/09/06/125966.html

c++不太懂喔

感谢指导

C#写个方法获取操作系统位数的方法,然后打包成dll,然后jni,读取dll,获取方法返回值,从而判断位数,你说如何?
0
OneThin
OneThin
java是跨平台的,面向的是java虚拟机,自有一套标准,为何要管操作系统呢
0
Macrotea
Macrotea

引用来自“OneThin”的答案

java是跨平台的,面向的是java虚拟机,自有一套标准,为何要管操作系统呢
 话虽如此,然而问题来源于需求,还是希望满足需求,你懂的...
0
dreamers
dreamers

你确定你的是64位的操作系统?我的也是64位的,显示正常哦.:amd64。

0
Macrotea
Macrotea

引用来自“yangzhiyong”的答案

你确定你的是64位的操作系统?我的也是64位的,显示正常哦.:amd64。

这就怪了,你看下我的截图:

实迷途其未远觉今是而昨非
实迷途其未远觉今是而昨非
回复 @Midnight : cpu基本不可能是32位的了,amd从k8开始就是64位的了,这也就是为什么很多软件的64位版本会写成amd64,后来intel在此基础上又改进了。
逝水fox
逝水fox
x86是CPU架构,和是32位还是64位没有必然联系。这个问题如果确实是Java程序需要,比较推荐用一楼的方法通过JNI获取或通过Runtime调用特定系统命令来获取。
Midnight
Midnight
不懂java, 不过有没有可能是虚拟机运行在32位模式下的呢?
0
实迷途其未远觉今是而昨非
实迷途其未远觉今是而昨非
可以用此打印出所有系统信息
Properties props=System.getProperties();
        props.list(System.out);
挑几个相关的,不过这些参数还是不能肯定操作系统的版本,毕竟Java代码都是和jvm打交道的,不管其他东西的,最多也就是能得到jvm的版本,如果是64位系统装32位jdk可能就会出错了,没有测试过 还是jni调用可能靠谱些 java.vm.name=Java HotSpot(TM) 64-Bit Server VM os.arch=amd64 sun.management.compiler=HotSpot 64-Bit Tiered Compilers sun.arch.data.model=64 sun.cpu.isalist=amd64
0
Macrotea
Macrotea

引用来自“狼牙化石”的答案

可以用此打印出所有系统信息
Properties props=System.getProperties();
        props.list(System.out);
挑几个相关的,不过这些参数还是不能肯定操作系统的版本,毕竟Java代码都是和jvm打交道的,不管其他东西的,最多也就是能得到jvm的版本,如果是64位系统装32位jdk可能就会出错了,没有测试过 还是jni调用可能靠谱些 java.vm.name=Java HotSpot(TM) 64-Bit Server VM os.arch=amd64 sun.management.compiler=HotSpot 64-Bit Tiered Compilers sun.arch.data.model=64 sun.cpu.isalist=amd64

我想也是!我看到网上有c#获得判断操作系统位数的方法funA,我到时候生成dll,然后java通过jni调用dll的funA从而获得返回值,或许这是最绕但是最准确的方式,你觉得呢?

0
52java
52java
回答不了你的问题,帮顶了
返回顶部
顶部