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

Mac M2环境下JavaFX Maven项目运行报错Exit value:1求助

排查修复步骤

1. 核对资源文件路径与加载写法

  • 确保资源文件(如FXML、图片)放在Maven默认的src/main/resources目录下,这是项目编译时资源的根目录。
  • 调用getResource时的路径要匹配资源位置:
    • 若资源在src/main/resources/login.fxml,路径需写"/login.fxml"(开头带斜杠,从资源根目录定位);
    • 若资源和LoginScene.java同包(比如src/main/resources/com/example/game/login.fxml对应com.example.game.LoginScene),可直接写"login.fxml"。
  • 注意路径大小写:Mac文件系统默认不区分大小写,但打包后可能出现匹配问题,尽量保持路径与文件名完全一致。

2. 检查Maven资源打包配置

打开项目pom.xml,确认资源目录和JavaFX插件配置正确:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*</include> <!-- 确保所有资源被打包 -->
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>0.0.8</version>
            <configuration>
                <mainClass>你的主类全路径</mainClass> <!-- 替换为实际主类,比如com.example.game.Main -->
            </configuration>
        </plugin>
    </plugins>
</build>

执行mvn clean package重新打包,查看target/classes目录,确认资源文件已被正确复制进去(比如target/classes/login.fxml是否存在)。

3. 修正资源加载代码

替换原有的ClassLoader.getResource调用,改用当前类的getResource方法,可靠性更高:

// 替换原来的ClassLoader.getResource逻辑
URL url = LoginScene.class.getResource("/login.fxml");
if (url == null) {
    throw new IllegalArgumentException("未找到指定资源: /login.fxml");
}
// 后续调用url.toExternalForm()

4. 检查IntelliJ运行配置与缓存

  • 打开Run/Debug Configurations,确保JavaFX运行配置的VM参数正确指定了JavaFX模块路径与依赖:
    --module-path /你的JavaFXSDK路径/lib --add-modules javafx.controls,javafx.fxml
    
  • 执行Build -> Rebuild Project清理编译缓存,再重新运行项目。

5. 确认JavaFX SDK适配M2架构

  • 确保下载的JavaFX 22 SDK是arm64架构版本(M2芯片属于arm64),不要使用x86_64版本。
  • 在IntelliJ的File -> Project Structure -> Libraries中,检查JavaFX SDK的路径是否指向arm64版本的lib目录。

6. 模块化项目额外配置

如果项目使用了module-info.java,需在其中声明模块依赖与资源开放:

module com.example.game {
    requires javafx.controls;
    requires javafx.fxml;

    opens com.example.game to javafx.fxml; // FXML需要访问的包需开放
    exports com.example.game;

    // 若资源在特定包下,需开放该包
    opens com.example.game.resources to javafx.fxml;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:56:09