cgi*_*vre 5 java macos java-8 java-11
我有一个奇怪的java问题。我正在 MacBook Air 上工作并进行一些 Java 开发工作。我需要我的代码来执行以下操作:
\n// pseudo code\nif (intel) {\n // Load docker \n} else if (arm) {\n // Load ARM docker\n}\nRun Code Online (Sandbox Code Playgroud)\n它适用于 Intel 和基于 Linux 的 ARM 架构。但对于我的 M1 MacBook Air,它报告操作系统是Mac OS X,但架构报告为x86. 由于最后一个问题,我无法区分 ARM 和 Intel 机器。
这是我正在运行的 JDK 版本。我觉得我在这里遗漏了一些东西,但是有什么方法可以编写这段代码,以便我可以确定代码是在 M1 还是 Intel 上运行?
\n ~ java --version\nopenjdk 11.0.12 2021-07-20 LTS\nOpenJDK Runtime Environment Zulu11.50+19-CA (build 11.0.12+7-LTS)\nOpenJDK 64-Bit Server VM Zulu11.50+19-CA (build 11.0.12+7-LTS, mixed mode)\n(base) \xe2\x9e\x9c ~ java -XshowSettings 2>&1 | grep " os."\n os.arch = x86_64\n os.name = Mac OS X\n os.version = 11.5\nRun Code Online (Sandbox Code Playgroud)\n
这可能是因为您实际上是在 M1 Macbook 上通过 Rosetta 运行 x86_64 Java VM。至少 AdoptOpenJDK 甚至不提供 Java 11 的本机 m1 版本。对于 Java 17,有可用的本机 aarch64 版本:https: //adoptium.net/releases.html ?variant=openjdk17&jvmVariant=hotspot
\n在与地图捆绑的Activity Monitor应用程序中,您可以验证应用程序 (\xe2\x80\x9cprocess\xe2\x80\x9d) 是在本机运行还是在Rosetta 2下运行。找到您的流程(可能名为 )java,然后查看“种类”列。本机应用程序说Apple,而 Rosetta 2 下的应用程序说Intel。
| 归档时间: |
|
| 查看次数: |
5686 次 |
| 最近记录: |