Pentaho 数据集成无法在新的 Mac M1 上启动

问题描述 投票:0回答:3

当我尝试在 Mac bigSur (M1) 上运行 Pentaho Data Integration 时遇到问题。

在下面发出代码:

I'm sorry, this Mac platform [arm64] is not yet supported! Please try starting using 'Data Integration 32-bit' or 'Data Integration 64-bit' as appropriate.

java版本

> java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)

有人可以帮我解决这个问题吗?

谢谢

pentaho kettle arm64 pentaho-data-integration apple-m1
3个回答
18
投票

尝试来自 reddit

的指南

指南:

以下是如何强制 shell 在 Intel 模式下运行,以便您 可以继续在这个小小的命令行 Rosetta Island 中工作,同时 等待原生 ARM64 支持。

  1. 打开终端应用程序。

  2. 打开终端应用程序的首选项。

  3. 单击“配置文件”选项卡。

  4. 选择一个配置文件,单击配置文件列表底部的省略号,然后选择复制配置文件。

  5. 单击新配置文件并为其命名。我将我的命名为“Rosetta Shell”。

  6. 另外,在新配置文件中,单击“窗口”选项卡。在标题中,输入一个名称以表明这是用于运行基于 Intel 的应用程序。我在我的上输入了“Terminal (Intel)”。

  7. 单击 Shell 选项卡并使用以下命令作为其运行命令以强制在 Rosetta 下运行 shell:

    env /usr/bin/arch -x86_64 /bin/zsh --login

  8. 取消选中 Run inside shell 复选框。清除该复选框将阻止运行 shell 两次,这可能会使您的环境变量膨胀,因为 ~/.zshrc 运行了两次。

  9. 可以选择将此配置文件设置为默认值。

这是第一步。之后,您必须替换数据集成文件夹中的 swt.jar

/path_to_your_data-integration/libswt/osx64/
不然无法启动。

您可以在这里下载 jar

重要!: 你不必重命名这个文件,但你必须删除原来的 swt.jar 。


2
投票

我只是想补充一点,您需要安装 x86 Java 版本才能使 Tufan Atak 解决方案 正常工作。

因此,如果您安装了 M1 兼容 Java 版本,并且尝试用该版本启动 Spoon,它将抛出下一个错误:

java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
    no swt-cocoa-4944r26 in java.library.path
    no swt-cocoa in java.library.path
    no swt in java.library.path
    Can't load library: /<user-home-path>/.swt/lib/macosx/aarch64/libswt-cocoa-4944r26.jnilib
    Can't load library: /<user-home-path>/.swt/lib/macosx/aarch64/libswt-cocoa.jnilib
    Can't load library: /<user-home-path>/.swt/lib/macosx/aarch64/libswt.jnilib
    /<user-home-path>/.swt/lib/macosx/aarch64/libswt-cocoa-4944r26.jnilib: dlopen(/<user-home-path>/.swt/lib/macosx/aarch64/libswt-cocoa-4944r26.jnilib, 0x0001): tried: '/<user-home-path>/.swt/lib/macosx/aarch64/libswt-cocoa-4944r26.jnilib' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))

    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:348)
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:257)
    at org.eclipse.swt.internal.C.<clinit>(C.java:19)
    at org.eclipse.swt.widgets.Display.<clinit>(Display.java:107)
    at org.pentaho.di.ui.core.widget.OsHelper.setAppName(OsHelper.java:106)
    at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:652)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.pentaho.commons.launcher.Launcher.main(Launcher.java:92)

因此您需要从相同的英特尔终端配置文件再次安装 Java,以便安装 x86 版本。

您可以使用SDK Man,然后您可以执行此命令(对于java 8 temurin):

> sdk install java 8.0.345-tem
.
.
.
> Do you want java 8.0.345-tem to be set as default? (Y/n): n

第 n 个答案是因为您不想使用 x86 版本运行所有其他 java 程序。

之后你可以告诉 SDK Man 使用这个新版本作为这个终端 shell

> sdk use java 8.0.345-tem

然后只需验证当前版本是您刚刚指示 sdk man 使用的版本:

> java -version

你应该看到这样的东西:

openjdk version "1.8.0_345"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_345-b01)
OpenJDK 64-Bit Server VM (Temurin)(build 25.345-b01, mixed mode)

之后终于可以开始用勺子了

> ./spoon.sh

0
投票

我尝试了上述解决方案,但仍然出现此错误

抱歉,尚不支持此Mac平台[arm64]!请尝试根据需要开始使用“数据集成 32 位”或“数据集成 64 位”。

我发现spoon.sh使用命令

uname -m
来检测CPU架构以及如果检测到arm64架构是否显示错误。不幸的是,即使在 Rosetta 终端中,该命令也始终返回 arm64。 我的解决方案是:

  1. 将所有
    uname -m
    替换为
    echo 'x86_64'
  2. 下载最新的swt.jar

您现在甚至可以在 arrch64 终端中运行 spoon.sh

  • MacOS:14.2.1
  • Pentaho:9.4
  • Java:Corretto-21.0.2.13.1
© www.soinside.com 2019 - 2024. All rights reserved.