gpt4 book ai didi

JAVA 返回 "Linux-all-ports"作为 os.name。 "Linux"as os.name 相比有什么意义?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:17 26 4
gpt4 key购买 nike

我有两个相同的*系统。一个返回 "Linux-all-ports",一个从 System.getProperty("os.name") 返回 "Linux"

“Linux-all-ports” 是什么意思?为什么一个系统会返回一个,而一个系统会返回另一个? JAVA 中是否存在可以更改此属性或其他内容的内部状态?

注意:特定硬件可能不相同(主板、芯片组、PCI 卡等),但我们不希望这会更改 os.name正确的?如果硬件会影响 os.name 属性,那将是非常好的。

*两台机器 PXE 从相同的操作系统镜像 (Ubuntu) 启动,我们确认 JAVA ver/build 是相同的,uname 的输出是相同的,所以我们非常有信心环境是相同的.

最佳答案

在 Linux 系统上,System.getProperty("os.name") 应该返回 "Linux"

但是os.name 属性不是只读的,因此任何人都可以将其更改为任意值。 (这看起来很疯狂)。

"Linux-all-ports" 在 RXTX 库之外没有任何意义;它是由该项目的开发人员组成的。有人将 os.name 设置为该值以触发 RXTX 库中的某个神奇开关,并且永远不会将其设置回来。

tl;dr 部分:

如果您的应用程序需要一些自定义设置,则在启动 JVM 时设置系统属性会很有用。但是让它们在应用程序中可写似乎很尴尬。

我假设像 os.name 这样的东西永远不会是用户可设置的值,所以我假设它的设置很重要。但这种情况并非如此。您可以将 os.name"Linux" 更改为 "ZippityFreakinDooDaa" 并彻底破坏所有内容。

甲骨文 acknowledges this here :

Warning: Changing system properties is potentially dangerous and should be done with discretion. Many system properties are not reread after start-up and are there for informational purposes. Changing some properties may have unexpected side-effects.

显然可以使用 Security Manager 保护系统属性(设为只读) .

关于JAVA 返回 "Linux-all-ports"作为 os.name。 "Linux"as os.name 相比有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31947781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com