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

Apple Silicon Mac构建JavaFx项目遇libprism_es2.dylib加载失败怎么办?

解决Apple Silicon Mac上JavaFX构建的libprism_es2.dylib加载错误

这个错误的核心原因是Apple Silicon采用arm64架构,若JavaFX依赖未匹配对应架构,会默认拉取x86_64版本的本地库,导致无法加载。以下是针对不同构建工具的解决方案:

Maven配置

方式一:直接指定arm64架构依赖

在pom.xml的依赖中添加classifier字段,明确指定mac-aarch64版本:

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>你的JavaFX版本</version>
        <classifier>mac-aarch64</classifier>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>你的JavaFX版本</version>
        <classifier>mac-aarch64</classifier>
    </dependency>
    <!-- 按需添加javafx-graphics、javafx-media等其他模块 -->
</dependencies>

方式二:用JavaFX Maven插件自动适配

插件会自动检测当前系统架构,无需手动指定classifier:

<build>
    <plugins>
        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>0.0.8</version>
            <configuration>
                <mainClass>你的主类全限定名</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

Gradle配置

方式一:指定arm64架构依赖

在build.gradle中直接声明带架构后缀的依赖:

dependencies {
    implementation 'org.openjfx:javafx-controls:你的JavaFX版本:mac-aarch64'
    implementation 'org.openjfx:javafx-fxml:你的JavaFX版本:mac-aarch64'
    // 其他模块同理
}

方式二:使用JavaFX Gradle插件

引入插件后会自动处理架构适配:

plugins {
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.13'
}

javafx {
    version = '你的JavaFX版本'
    modules = ['javafx.controls', 'javafx.fxml'] // 按需调整模块
}

application {
    mainClass = '你的主类全限定名'
}

Sbt配置

方式一:指定arm64架构依赖

在build.sbt中添加带classifier的依赖:

libraryDependencies ++= Seq(
  "org.openjfx" % "javafx-controls" % "你的JavaFX版本" classifier "mac-aarch64",
  "org.openjfx" % "javafx-fxml" % "你的JavaFX版本" classifier "mac-aarch64"
  // 其他模块按需添加
)

方式二:使用sbt-javafx插件

插件自动适配系统架构:

addSbtPlugin("org.openjfx" % "sbt-javafx" % "0.0.13")

javafx {
  version = "你的JavaFX版本"
  modules = Seq("javafx.controls", "javafx.fxml")
}

通用检查项

  • 确保使用arm64版本的JDK(如Azul Zulu、Adoptium提供的arm64 JDK),避免用x86_64 JDK通过Rosetta运行,否则会引发架构不匹配。
  • 清理构建缓存:执行mvn clean、gradle clean或sbt clean后重新构建,防止缓存的x86_64库干扰。
  • 确认JavaFX版本与JDK版本兼容:例如JavaFX 17+需要搭配JDK 17及以上版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:45:17