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

Mac(M1 Max)下Maven无法解析JavaFX 21.0.6依赖求助

Maven无法解析JavaFX依赖问题(Apple M1 Max环境)

关联Stack Overflow讨论原方案无效,重新提问。

环境信息

Mac环境

  • MacBook Pro(Apple M1 Max芯片)
  • macOS 15.2

Java环境

当前生效版本:

echo $JAVA_HOME 
/opt/homebrew/Cellar/openjdk@21/21.0.6/libexec/openjdk.jdk/Contents/Home

架构为aarch64:

file $(echo $JAVA_HOME)/bin/java
/opt/homebrew/Cellar/openjdk@21/21.0.6/libexec/openjdk.jdk/Contents/Home/bin/java: Mach-O 64-bit executable arm64

Maven环境

which mvn
/opt/homebrew/bin/mvn
mvn -version
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /opt/homebrew/Cellar/maven/3.9.9/libexec
Java version: 21.0.6, vendor: Homebrew, runtime: /opt/homebrew/Cellar/openjdk@21/21.0.6/libexec/openjdk.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "15.2", arch: "aarch64", family: "mac"

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.drm.astro</groupId>
    <artifactId>picker</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <javafx.platform>mac-aarch64</javafx.platform>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx</artifactId>
            <version>21.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>21.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.controlsfx</groupId>
            <artifactId>controlsfx</artifactId>
            <version>11.2.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>21</source>
                    <target>21</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>1.18.30</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>0.0.8</version>
            </plugin>
        </plugins>
    </build>
</project>

报错信息

执行mvn install时出现:

[ERROR] dependency: org.openjfx:javafx:jar:21.0.6 (compile)
[ERROR]     Could not find artifact org.openjfx:javafx:jar:21.0.6 in central

已尝试操作

  • 更换不同版本的org.openjfx:javafx依赖
  • 在pom中手动添加<javafx.platform>mac-aarch64</javafx.platform>属性

解决方案

问题根源

org.openjfx:javafx是聚合类型依赖(pom),本身不是可直接引用的jar包,所以Maven无法在中央仓库找到对应的jar文件。你需要直接引入具体的JavaFX模块,并指定对应平台的分类器。

方案1:修改依赖为具体模块并指定分类器

把原来的javafx聚合依赖替换成实际需要的JavaFX模块(比如javafx-controls、javafx-graphics),同时添加平台分类器:

<dependencies>
    <!-- 替换原javafx聚合依赖为具体模块 -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>21.0.6</version>
        <classifier>${javafx.platform}</classifier>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>21.0.6</version>
        <classifier>${javafx.platform}</classifier>
    </dependency>
    <!-- 保留原有的javafx-fxml依赖并添加分类器 -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>21.0.6</version>
        <classifier>${javafx.platform}</classifier>
    </dependency>
    <!-- 其他依赖不变 -->
    <dependency>
        <groupId>org.controlsfx</groupId>
        <artifactId>controlsfx</artifactId>
        <version>11.2.1</version>
    </dependency>
</dependencies>

方案2:使用Maven Profile自动适配平台

如果需要跨平台构建,可以添加Profile让Maven自动根据当前系统选择分类器:

<profiles>
    <profile>
        <id>mac-aarch64</id>
        <activation>
            <os>
                <family>mac</family>
                <arch>aarch64</arch>
            </os>
        </activation>
        <properties>
            <javafx.classifier>mac-aarch64</javafx.classifier>
        </properties>
    </profile>
    <!-- 可添加其他平台Profile,比如mac-x86_64、win、linux等 -->
</profiles>

然后在依赖中使用${javafx.classifier}作为分类器即可。

方案3:手动下载并引入本地jar

如果插件和依赖配置都无法解决,可直接下载aarch64版本的JavaFX压缩包,解压后将jar放入项目lib目录,再在pom中配置系统依赖:

<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>21.0.6</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/javafx-controls-21.0.6-mac-aarch64.jar</systemPath>
</dependency>
<!-- 其他JavaFX模块同理配置 -->

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:37:01