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

IntelliJ导出JavaFX JAR时FXML文件未打包的问题求助

解决JavaFX程序导出JAR后FXML无法加载的问题

核心问题定位

你遇到的Location is not set错误,本质是FXML文件没有被打包进最终的JAR文件,导致类加载器找不到资源。以下是具体解决步骤:


1. 修复IntelliJ的资源目录配置

首先确保IntelliJ正确识别你的资源目录:

  • 右键点击项目中的src/main/resources目录,选择Mark Directory as -> Resources Root。这一步让IntelliJ知道该目录下的文件需要被打包到JAR的对应路径中。

2. 修正Artifact打包配置

检查JAR的构建配置,确保资源文件被包含:

  1. 打开File -> Project Structure -> Artifacts,找到你创建的JAR artifact。
  2. 在右侧的Output Layout面板中,查看是否存在plop目录下的FXML文件。如果没有:
    • 点击左侧的+按钮,选择Directory Content。
    • 选中src/main/resources目录,将其添加到输出结构中。
  3. 点击Apply后,重新构建Artifact(Build -> Build Artifacts -> Rebuild)。

3. 验证FXML加载路径(可选但稳妥)

保持你的加载逻辑,但建议使用绝对路径避免包结构混淆:

// 使用绝对路径加载,确保从类路径根目录定位资源
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/plop/SceneOuverture.fxml"));
Parent root = fxmlLoader.load();
Scene scene = new Scene(root);

4. 验证JAR内容与运行命令

  • 重新构建后,用7-Zip打开JAR文件,确认plop目录下存在三个FXML文件。
  • 运行JAR时,注意JavaFX的模块化要求(如果使用Java 11+),命令示例:
java --module-path "你的JavaFX SDK路径/lib" --add-modules javafx.controls,javafx.fxml -jar 你的JAR文件名.jar

如果需要让同学直接双击运行,建议使用IntelliJ的JavaFX打包工具或Maven/Gradle的JavaFX插件(如javafx-maven-plugin)构建独立可执行包。

内容的提问来源于stack exchange,提问作者A.CAL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:01:14