如何用 Java 检测类 Unix 操作系统?

2024-04-17

好的,我知道System.getProperty("os.name")会给我正在运行的操作系统的名称,但这并没有多大帮助。我需要知道的是,我运行的操作系统是否是“类 Unix”操作系统,我不在乎它是 HP-UX、AIX、Mac OS X 还是其他操作系统。

来自可能的 os.name 值列表 http://lopica.sourceforge.net/os.html这似乎是检测“类 Unix”操作系统的一种快速而肮脏的方法,即检查是否os.name does not包含“Windows”。会给我带来误报的是我的代码不太可能遇到的操作系统!不过,如果有的话,我很想知道一种更好的方法。


Use the org.apache.commons.lang.SystemUtils https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/SystemUtils.htmlCommons Lang 的实用程序类,它有一个很好的IS_OS_UNIX https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/SystemUtils.html#IS_OS_UNIX持续的。来自javadoc:

Is true如果这是 POSIX 兼容的 系统,如 AIX、HP-UX、Irix、 Linux、MacOSX、Solaris 或 SUN 操作系统。

如果 OS_NAME 则该字段将返回 false 一片空白。

测试变成:

if (SystemUtils.IS_OS_UNIX) {
    ...
}

简单、有效、易于阅读,没有神秘的技巧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用 Java 检测类 Unix 操作系统? 的相关文章

随机推荐

  • 匹配条件时更改列值

    我需要更换一个NULL仅当其他条件匹配时列中的值 Columns Parent Child flag01 lag02 父栏目有很多NULL值 但我想替换null仅当flag01 and flag02是 好的 If flag01 and fl
  • 展平 RDD 中的 Scala 映射

    我有一个 RDD 如下所示 uidProcessedKeywords org apache spark rdd RDD Long Map String Double 如何展平 RDD 中的地图以获得以下结果 org apache spark
  • Flash AS3 - 如何访问其他帧(也称为非一帧)中的显示对象

    只要该子项位于第一帧中 getChildByName name 就会起作用 其他框架中的显示对象还没有被实例化 所以并不是说不能访问它们 它们不存在可供访问的地方 当播放头进入具有特定对象的关键帧时 会创建该对象并将其添加到舞台中 当播放头
  • Python 多线程

    我有这样的场景 使用 Zope Plone 和一些我的 python API 创建的网页 有一个网页 称之为 a 它通过 python 方法调用数据库 Postgres 并返回一些信息 在页面 a 上 您可以 离线 修改数 据库数据 我的意
  • 如何让 CBC 在时限内返回最佳解决方案? (皮莫)

    我正在尝试在 Pyomo 上使用 CBC v2 10 3 来解决整数线性问题 执行求解器时 我当前设置的时间限制为 600 秒 opt SolverFactory cbc opt options seconds 600 在这个时间限制内 求
  • 在Python中跳过范围函数中的值

    循环一系列数字并跳过一个值的Python式方法是什么 例如 范围是从 0 到 100 我想跳过 50 编辑 这是我正在使用的代码 for i in range 0 len list x listRow list i for j in ran
  • BringIntoView 不起作用

    我在事件处理程序后面有这段代码 private void comboActiveStudentAssignmentType SelectionChanged object sender SelectionChangedEventArgs e
  • Faye 在 jruby 的铁轨上

    我搜索了很多 但找不到任何资源表明我可以将 Faye 与 jruby 一起使用 我已经发现this one https groups google com forum fromgroups topic faye users wvp K38v
  • 在资源路径中找不到 com/sun/jna/android-arm/libjnidispatch.so

    以下所有操作均在 Android Studio 中完成 我已成功编译并测试了 Android Watson Speech to Text 演示应用程序 然后 我创建了一个包含 Watson 相关 API 的库项目和一个带有引用 Watson
  • 如何向 Next.js 静态站点添加网站图标?

    我正在尝试将网站图标添加到 Next js 静态站点 但运气不佳 我尝试使用以下组件自定义文档 next document https nextjs org docs custom document https nextjs org doc
  • 如何连接字符串列表? [复制]

    这个问题在这里已经有答案了 对于你们大多数人来说 这可能非常容易解决 但我无法简单地解决这个问题str 周围可以吗 我想转换这个列表 A B C into A B C In 1 L A B C In 2 join L Out 2 A B C
  • Apache 中的手动内容压缩

    我需要 Apache 上的手动压缩解决方案 我的目标 在我的服务器上提供 gzip 编码的内容以及未压缩的内容 文件已预先压缩 并非所有文件都经过压缩 我想指定这些文件 并且选择不是基于类型 扩展名 的 提供许多内容类型 自定义内容类型 并
  • NuGet 不更新项目引用

    我最近将所有 Visual Studio 2013 项目迁移到 Visual Studio 2015 并按照本文档中记录的步骤进行操作article https docs nuget org consume package restore
  • 为什么在这种无竞争的情况下原子比锁慢得多?

    我使用原子而不是锁编写了一些东西 并且对它在我的情况下慢得多感到困惑 我编写了以下小型测试 include
  • 找不到版本“CXXABI_1.3.8”(...需要)[重复]

    这个问题在这里已经有答案了 当我在编译后运行程序时 出现以下错误 prog usr lib x86 64 linux gnu libstdc so 6 版本CXXABI 1 3 8 not found required by prog pr
  • getchar() 和 putchar() 是函数还是宏?

    我引用了两个可靠的信息来源 两者似乎对同一事物有不同的定义 http www cplusplus com reference clibr E2 80 A6 http www cplusplus com reference clibr E2
  • 如何实时更新glance小部件?

    有可能吗live update的数据Widget using Glance喷气背包组成 就像在数据库发生变化时更新数据一样 例如 当我使用时flow所以 Flow 应该能够更新小部件数据 对吗 我们可以更新点击操作 例如 class MyW
  • 是否可以在没有订阅密钥的情况下调用 Azure API Rest url?

    我只是希望能够使用 Azure Web Api 管理进行休息调用 而无需在 url 中传递订阅密钥 那可能吗 Azure API 管理允许匿名订阅 创建产品而不需要订阅 产品 gt 设置 gt 需要订阅 将您的 API 添加到此产品 htt
  • 是否有理由将数据库连接池与 ActiveRecord 一起使用?

    使用外部连接池有什么好处 我听说大多数其他应用程序都会为每个工作单元打开一个连接 例如 在 Rails 中 我认为这意味着每个请求都可以打开一个新连接 我假设连接池将使这成为可能 我能想到的唯一好处是它允许您拥有 1 000 个前端进程 而
  • 如何用 Java 检测类 Unix 操作系统?

    好的 我知道System getProperty os name 会给我正在运行的操作系统的名称 但这并没有多大帮助 我需要知道的是 我运行的操作系统是否是 类 Unix 操作系统 我不在乎它是 HP UX AIX Mac OS X 还是其