当我尝试在 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)
有人可以帮我解决这个问题吗?
谢谢
尝试来自 reddit
的指南以下是如何强制 shell 在 Intel 模式下运行,以便您 可以继续在这个小小的命令行 Rosetta Island 中工作,同时 等待原生 ARM64 支持。
打开终端应用程序。
打开终端应用程序的首选项。
单击“配置文件”选项卡。
选择一个配置文件,单击配置文件列表底部的省略号,然后选择复制配置文件。
单击新配置文件并为其命名。我将我的命名为“Rosetta Shell”。
另外,在新配置文件中,单击“窗口”选项卡。在标题中,输入一个名称以表明这是用于运行基于 Intel 的应用程序。我在我的上输入了“Terminal (Intel)”。
单击 Shell 选项卡并使用以下命令作为其运行命令以强制在 Rosetta 下运行 shell:
env /usr/bin/arch -x86_64 /bin/zsh --login
取消选中 Run inside shell 复选框。清除该复选框将阻止运行 shell 两次,这可能会使您的环境变量膨胀,因为 ~/.zshrc 运行了两次。
可以选择将此配置文件设置为默认值。
这是第一步。之后,您必须替换数据集成文件夹中的 swt.jar
/path_to_your_data-integration/libswt/osx64/
不然无法启动。
重要!: 你不必重命名这个文件,但你必须删除原来的 swt.jar 。
我只是想补充一点,您需要安装 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
我尝试了上述解决方案,但仍然出现此错误
抱歉,尚不支持此Mac平台[arm64]!请尝试根据需要开始使用“数据集成 32 位”或“数据集成 64 位”。
我发现spoon.sh使用命令
uname -m
来检测CPU架构以及如果检测到arm64架构是否显示错误。不幸的是,即使在 Rosetta 终端中,该命令也始终返回 arm64。
我的解决方案是:
uname -m
替换为 echo 'x86_64'
您现在甚至可以在 arrch64 终端中运行 spoon.sh