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

MacOS BigSur下编译Graal Native Image报错求助:函数未返回NSString

macOS BigSur 下 Graal Native Image 编译失败问题解决

问题背景

在macOS BigSur系统中执行./gradlew nativeCompile编译Graal Native Image时失败,核心错误为function does not return NSString。

环境信息

java -version
openjdk version "17.0.5" 2022-10-18
OpenJDK Runtime Environment GraalVM CE 22.3.0 (build "17.0.5+8-jvmci-22.3-b08")
OpenJDK 64-Bit Server VM GraalVM CE 22.3.0 (build "17.0.5+8-jvmci-22.3-b08", mixed mode, sharing)

native-image --version
GraalVM 22.3.0 Java 17 CE (Java Version "17.0.5+8-jvmci-22.3-b08")

报错信息

执行编译命令后直接报错:

Error: Error compiling query code (in /var/folders/zr/ctjr8g2574ggz5xjzrd6jyxw0000gn/T/SVM-4935784945826410470/PosixDirectives.c). Compiler command '/usr/bin/cc -Wall -Werror -Wno-tautological-compare -ObjC -o /var/folders/zr/ctjr8g2574ggz5xjzrd6jyxw0000gn/T/SVM-4935784945826410470/PosixDirectives /var/folders/zr/ctjr8g2574ggz5xjzrd6jyxw0000gn/T/SVM-4935784945826410470/PosixDirectives.c' output included error: /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:91:143: error: function does not return NSString
Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception

添加-H:+ReportExceptionStackTraces参数后,堆栈信息未提供额外有效内容,核心错误不变:

Error: Error compiling query code (in /var/folders/zr/ctjr8g2574ggz5xjzrd6jyxw0000gn/T/SVM-17577305799927673130/PosixDirectives.c). Compiler command '/usr/bin/cc -Wall -Werror -Wno-tautological-compare -ObjC -o /var/folders/zr/ctjr8g2574ggz5xjzrd6jyxw0000gn/T/SVM-17577305799927673130/PosixDirectives /var/folders/zr/ctjr8g2574ggz5xjzrd6jyxw0000gn/T/SVM-17577305799927673130/PosixDirectives.c' output included error: /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:91:143: error: function does not return NSString
com.oracle.svm.core.util.UserError$UserException: Error compiling query code (in /var/folders/zr/ctjr8g2574ggz5xjzrd6jyxw0000gn/T/SVM-17577305799927673130/PosixDirectives.c). Compiler command '/usr/bin/cc -Wall -Werror -Wno-tautological-compare -ObjC -o /var/folders/zr/ctjr8g2574ggz5xjzrd6jyxw0000gn/T/SVM-17577305799927673130/PosixDirectives /var/folders/zr/ctjr8g2574ggz5xjzrd6jyxw0000gn/T/SVM-17577305799927673130/PosixDirectives.c' output included error: /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:91:143: error: function does not return NSString
    at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.UserError.abort(UserError.java:139)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.c.NativeLibraries.reportErrors(NativeLibraries.java:371)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.processNativeLibraryImports(NativeImageGenerator.java:1715)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.setupNativeLibraries(NativeImageGenerator.java:1121)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.setupNativeImage(NativeImageGenerator.java:915)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:575)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:535)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:403)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:580)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:128)

解决方法

  1. 匹配SDK版本:macOS BigSur对应的是MacOSX11.x系列SDK,当前使用的MacOSX12.1.sdk属于Monterey系统,版本不兼容导致编译错误。操作步骤:

    • 查看已安装的SDK:xcodebuild -showsdks
    • 设置环境变量指定对应SDK:export SDKROOT=$(xcrun --show-sdk-path --sdk macosx11.7)(替换为实际存在的BigSur版本SDK)
    • 重新执行编译命令
  2. 升级GraalVM版本:GraalVM 22.3.0可能存在BigSur平台的兼容性问题,升级到23.x及以上版本(如23.1.0),新版本通常修复了这类平台适配问题。

  3. 临时绕过工具链检查:若需快速验证,可添加编译参数-H:-CheckToolchain跳过工具链检查,但这只是临时方案,建议优先解决SDK版本匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:00:52