Java 预处理器检查操作系统

发布于 2024-10-10 22:56:35 字数 39 浏览 6 评论 0原文

如何使用 Java 预处理器来确定我正在哪个操作系统上进行编译?

How do I use Java preprocessors to determine what OS I am compiling on?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

长途伴 2024-10-17 22:56:35

试试这个:

System.getProperty("os.name")

来自 如何以编程方式确定 Java 中的操作系统?

顺便说一句,Java 没有预处理器……这是我发现的一件烦人的事情。

Try this:

System.getProperty("os.name")

From How do I programmatically determine operating system in Java?

BTW Java doesn't have a preprocessor...one of the annoying things I discovered.

假扮的天使 2024-10-17 22:56:35

没有 Java 预处理器,也没有条件编译的能力。

内置了一个非常原始的调试功能,允许编译器删除具有常量条件的条件块,该条件为假,以方便消除调试代码 - 但我不记得规范是否需要或允许从已编译的类中删除代码。

static final boolean DEBUG=false;


...


if(Debugging.DEBUG) {
    // some code which the compile may (or must?) eliminate
    }

如果您想在运行时检测操作系统并在不同平台上执行不同的操作,则每个 JVM 都需要许多系统属性,这些属性记录在 System.getProperties() 中。请参阅 JavaDoc,相对于其安装位置或网络位置:

api/java/lang/System.html#getProperties()

There is no Java preprocessor and no ability to conditionally compile.

There is a very primitive debugging feature built in whereby the compile is allowed to delete conditional blocks with a constant condition which is false to facilitate elimination of debug code - but I don't recall if the spec requires or allows the code to be deleted from the compiled class.

static final boolean DEBUG=false;


...


if(Debugging.DEBUG) {
    // some code which the compile may (or must?) eliminate
    }

If you want to detect the O/S at runtime and do different things on different platforms, there are a number of system properties required in every JVM which are documented in System.getProperties(). See the JavaDoc, relative it's installed or network location:

api/java/lang/System.html#getProperties()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文