You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Pentaho 9.3 Spoon在Apple Silicon M1 ARM上运行报错的解决方案

Apple Silicon Mac(Monterey)下Pentaho Data Integration 9.3启动失败问题解决

问题场景

搭载Apple Silicon的MacBook Pro(Mac OS Monterey系统),安装Pentaho Data Integration 9.3后,install.sh执行无报错,但运行spoon.sh时出现SWT库加载失败错误。当前使用的OpenJDK版本信息:

Openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment (build 11.0.15+10)
OpenJDK 64-Bit Server VM (build 11.0.15+10, mixed mode)

错误日志如下:

WARNING: Using java from path
DEBUG: _PENTAHO_JAVA_HOME=
DEBUG: _PENTAHO_JAVA=java
DEBUG: PENTAHO_INSTALLED_LICENSE_PATH=
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
    no swt-cocoa-3738 in java.library.path: [./../libswt/osx64/]
    no swt-cocoa in java.library.path: [./../libswt/osx64/]
    Can't load library: /Users/jgregory/.swt/lib/macosx/aarch64/libswt-cocoa-3738.jnilib
    Can't load library: /Users/jgregory/.swt/lib/macosx/aarch64/libswt-cocoa.jnilib
    Can't load library: /Users/jgregory/.swt/lib/macosx/aarch64/libswt-cocoa-3738.jnilib

    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
    at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
    at org.pentaho.di.ui.core.widget.OsHelper.setAppName(OsHelper.java:106)
    at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:652)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.pentaho.commons.launcher.Launcher.main(Launcher.java:92)

解决方法

问题根源是Pentaho 9.3默认提供的SWT库为x86_64架构,与Apple Silicon的arm64(aarch64)架构不兼容,可通过以下方式解决:

  • 替换arm64架构SWT库

    1. 下载匹配Pentaho所用SWT版本(3738)的arm64架构SWT库文件
    2. 解压后取出libswt-cocoa-3738.jnilib、libswt-cocoa.jnilib等核心文件
    3. 替换Pentaho安装目录下data-integration/libswt/osx64/中的对应文件
    4. 手动创建~/.swt/lib/macosx/aarch64/目录,将上述文件复制到该目录中
  • 通过Rosetta 2以x86_64架构运行
    在终端执行以下命令启动Spoon:

    arch -x86_64 ./spoon.sh
    

    若想永久生效,可修改spoon.sh脚本,在开头添加arch -x86_64前缀,或单独创建包含该命令的启动脚本。

  • 配置对应架构的JAVA_HOME
    若用Rosetta方式运行,需确保使用x86_64架构的OpenJDK;若替换了arm版SWT库,则需搭配arm64架构的JDK。
    在spoon.sh中手动指定JDK路径,示例:

    export _PENTAHO_JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
    

验证

完成操作后重新运行spoon.sh,若不再出现SWT库加载错误,说明问题已解决。

内容的提问来源于stack exchange,提问作者Jason Gregory

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:27:11