【问题标题】:determine os architecture and bitness in java确定java中的操作系统架构和位数
【发布时间】:2013-05-09 02:19:10
【问题描述】:

我希望能够动态确定我的 Java 应用程序中的操作系统、体系结构和位数。

例如,我希望我的应用程序知道它何时在 Solaris 32 位 sparc 机器上或何时在 x86 机器上。

我知道系统get属性返回JVM的arch,但是有没有真正找出真正的os arch和bit-ness?

【问题讨论】:

  • 为什么要这样做? Java 存在的主要理由之一是保护您免受此类事情的影响...
  • 我添加了一些使用外部库的功能,但这些库依赖于操作系统。

标签: java dynamic architecture operating-system


【解决方案1】:

获取字节顺序最简单的方法是使用ByteOrder.nativeOrder();

操作系统在系统属性中。

为了确定 JVM 是否为 64 位,我使用了以下来自 ehcache 的内容。

private static final boolean IS64BIT = is64Bit0();

public static boolean is64Bit() {
    return IS64BIT;
}

private static boolean is64Bit0() {
    String systemProp;
    systemProp = System.getProperty("com.ibm.vm.bitmode");
    if (systemProp != null) {
        return systemProp.equals("64");
    }
    systemProp = System.getProperty("sun.arch.data.model");
    if (systemProp != null) {
        return systemProp.equals("64");
    }
    systemProp = System.getProperty("java.vm.version");
    return systemProp != null && systemProp.contains("_64");
}

【讨论】:

  • 非常感谢。没有考虑检查字节序。很有帮助。
  • @Seephor 通常最好在不需要知道这类事情的地方编写代码。
  • 我同意,但我不得不使用一些依赖于平台的外部库。
猜你喜欢
  • 1970-01-01
  • 2014-08-07
  • 2011-12-18
  • 1970-01-01
  • 2010-09-05
  • 2018-04-20
  • 1970-01-01
  • 2019-01-03
  • 2017-07-17
相关资源
最近更新 更多