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

升级GluonFX至1.0.16后Android APK构建失败问题排查

错误排查与解决方案

1. UnsupportedClassVersionError 类版本不兼容问题

原因

GluonFX 1.0.16默认拉取的JavaFX静态SDK为Java 17版本(类文件版本61.0),而你当前使用的GraalVM基于Java 11(最高支持类文件版本55.0),两者版本不匹配导致报错。此前GluonFX 1.0.12默认使用与Java 11兼容的JavaFX版本,因此无此问题。

解决方法

在项目pom.xml的GluonFX插件配置中,指定与Java 11兼容的JavaFX静态SDK版本,替换之前的javafxStaticSdkVersion=19:

<plugin>
    <groupId>com.gluonhq</groupId>
    <artifactId>gluonfx-maven-plugin</artifactId>
    <version>1.0.16</version>
    <configuration>
        <!-- 保留原有其他配置 -->
        <javafxStaticSdkVersion>11.0.16</javafxStaticSdkVersion>
        <targetPlatform>android</targetPlatform>
    </configuration>
</plugin>

该版本JavaFX基于Java 11编译,与你的GraalVM环境完全匹配。


2. NDK r21b 不识别--rosegment选项

原因

当指定javafxStaticSdkVersion=19时,JavaFX 19的GluonFX构建脚本会使用较新的链接选项--rosegment,但NDK r21b自带的Clang版本(9.x)不支持该参数,导致链接阶段失败。

解决方法

若坚持使用JavaFX 19,需先升级GraalVM至Java 17版本(JavaFX 19要求JDK 17+),同时将NDK升级到r23及以上版本(该版本开始的Clang支持--rosegment选项)。但更适配你当前Java 11环境的方案是回到上述JavaFX 11版本,此时NDK r21b可正常工作。


3. NDK r25b 报错clang-14: not found(文件实际存在)

原因

NDK r25b的Clang命名规则发生变化:旧版NDK的clang可执行文件带版本号(如clang-14),但r25b开始统一命名为clang/clang++,而GluonFX 1.0.16的构建脚本仍在尝试查找带版本号的可执行文件,导致路径匹配失败。

解决方法

  1. 创建软链接:在NDK的bin目录下为clang/clang++创建对应版本号的软链接:
    cd $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin
    ln -s clang clang-14
    ln -s clang++ clang++-14
    
  2. 配置环境变量:确保NDK的Clang路径加入系统PATH:
    export PATH=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
    
  3. 重启终端:让环境变量生效后再执行构建命令。

额外注意事项

  • 确认GRAALVM_HOME已指向graalvm-svm-java11-linux-gluon-22.1.0.1-Final,且PATH包含$GRAALVM_HOME/bin;
  • 构建前清理缓存:执行mvn clean gluonfx:clean,避免旧缓存干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:01:23