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

macOS Monterey下ZetaSQL BQ Library无法使用求助

问题:ZetaSQL在macOS Monterey下启动失败(Unsupported os.arch)

我有一个使用BigQuery Parser ZetaSQL的SpringBoot应用,pom依赖配置如下:

<dependency>
    <groupId>com.google.zetasql</groupId>
    <artifactId>zetasql-jni-channel</artifactId>
    <version>2022.08.1</version>
</dependency>

测试类中提取表名的代码:

public static void main(String[] args) {
    String Querystr = "SELECT * FROM `test.test.test` LIMIT 1000;";
    List<List<String>> tables = Analyzer.extractTableNamesFromStatement(Querystr);
}

运行时出现如下错误:

com.google.zetasql.ClientChannelProvider: Provider com.google.zetasql.JniChannelProvider could not be instantiated
    at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:582)
    at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:804)
    at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:722)
    at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1395)
    at com.google.zetasql.ClientChannelProvider.loadChannel(ClientChannelProvider.java:31)
    at com.google.zetasql.Client.getStub(Client.java:29)
    at com.google.zetasql.LanguageOptions.getDefaultFeatures(LanguageOptions.java:58)
    at com.google.zetasql.LanguageOptions.<init>(LanguageOptions.java:66)
    at com.google.zetasql.AnalyzerOptions.<init>(AnalyzerOptions.java:56)
    at com.google.zetasql.Analyzer.extractTableNamesFromStatement(Analyzer.java:162)
    at com.pexar.sigma.datasources.JdbcDatasourceApplication.main(JdbcDatasourceApplication.java:23)
Caused by: java.lang.ExceptionInInitializerError
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:780)
    ... 9 more
Caused by: java.lang.RuntimeException: Unsupported os.arch
    at com.google.zetasql.JniChannelProvider.getLibraryPath(JniChannelProvider.java:48)
    at com.google.zetasql.JniChannelProvider.<clinit>(JniChannelProvider.java:66)
    ... 14 more

使用系统:macOS Monterey


解决方案

这个错误的核心原因是当前使用的ZetaSQL版本(2022.08.1)对Apple Silicon架构兼容性不足,或JVM识别的系统架构与ZetaSQL预期不匹配,可按以下方式解决:

  • 升级ZetaSQL版本
    新版本ZetaSQL已修复Apple Silicon支持问题,直接将依赖版本升级到最新稳定版即可,示例:

    <dependency>
        <groupId>com.google.zetasql</groupId>
        <artifactId>zetasql-jni-channel</artifactId>
        <version>2024.04.1</version>
    </dependency>
    
  • 强制JVM以x86_64架构运行
    若暂时无法升级版本,通过Rosetta 2强制JVM切换到x86_64模式:

    • IDEA环境:进入Run/Debug Configurations,在VM options中添加参数:-d64 -Dos.arch=x86_64
    • 命令行运行:执行java -d64 -Dos.arch=x86_64 -jar 你的应用jar包名.jar
  • 切换到x86_64版本的JDK
    终端执行java -version查看当前JVM架构,若显示aarch64,说明是Apple Silicon版本JDK,换成x86_64版本的JDK也能解决兼容性问题。

内容的提问来源于stack exchange,提问作者Nidhi Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:40:27