【问题标题】:Apple M1 - Maven Java dependency that is not yet available for macosx-arm64Apple M1 - macosx-arm64 尚不可用的 Maven Java 依赖项
【发布时间】:2021-06-18 23:14:23
【问题描述】:

我正在尝试让一个 Java/Maven 项目在 Apple M1 上运行,该项目具有 M1 芯片尚不可用的依赖项。就我而言,这是 nd4j,但它可能是任何其他依赖项。

<dependency>
   <groupId>org.nd4j</groupId>
   <artifactId>nd4j-native</artifactId>
   <version>1.0.0-beta7</version>
</dependency>

我在这个项目中使用 IntelliJ。

我正在寻找一种方法来指定某种“兼容模式”,告诉 maven/IntelliJ 获取 X86 芯片的依赖项并使用 Rosetta 执行 Java、测试、maven 等。如果这不可能,还有什么办法可以解决这个问题?

【问题讨论】:

  • 出于兴趣,您是否有已经在 M1 上本地运行的 JDK(或者仍在使用 Rosetta)?
  • 我运行 Azul JDK。我通过自制软件安装了 Maven,我认为它包含一个支持 M1 的实验性 OpenJDK。我的其他 Java 项目与 Azul JDK 配合得很好,因为我没有这些其他项目的 nod4j 依赖项。
  • 您是否尝试过使用“普通”的 OpenJDK?那仍然是 x86,通过 Rosetta 运行,并且大概告诉 Maven 它的架构也是 x86。
  • 我只是在下面马里奥的回答之后尝试了这个。这确实有效。

标签: java maven intellij-idea apple-m1 rosetta-2


【解决方案1】:

您可以在您的机器上同时安装基于 x86_64 和 arm64 的 JDK,并根据需要在它们之间切换。 SDKMAN 之类的工具!可以帮助你:How to install x86 and Arm JDKs on the Mac M1

如果你的 maven 和 IntelliJ 使用默认的 JDK,当你切换 JDK 时,它们会自动在 x86_64 和 Arm64 架构之间切换。

【讨论】:

  • 非常感谢您的回答。这确实有效。一个小的缺点是 nd4j 似乎不能很好地与 Rosetta 一起工作,但我想我们对此无能为力。该项目可以构建并且可以运行,因此这已经是一个巨大的改进。测试运行良好。但是当使用更大的神经网络时,nd4j 会使用大量 RAM,并最终引发 OOM 异常。
【解决方案2】:

如果你在 Apple 上使用 IDEA for Java,不要使用 IDEA M1 版本,使用 Intel 版本。然后maven将使用macosx-x86 jar。只是改变JDK对我没有帮助。

【讨论】:

  • 还需要切换x86_64 JDKs,因为maven检测os.arch使用JDKs
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 2020-08-02
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-14
相关资源
最近更新 更多