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

Scene Builder与getResource返回错误路径,为何查找out/production目录?

问题原因
  • IntelliJ 编译项目时,会将 src 目录下的 Java 文件编译输出到 out/production 目录,但非 Java 资源文件(如 .css、.fxml)需要手动配置才能被同步到编译目录。你的 entry.fxml 能被找到,说明它已被正确复制,但 choicebox.css 未被同步,导致系统在 out/production 目录中找不到该文件。
  • getClass().getResource() 方法是从编译后的类路径中查找资源,而非原始的 src 目录,所以会定位到 out/production 下的路径。
解决方法

1. 配置资源目录,让IntelliJ自动同步CSS文件

  • 打开 IntelliJ,按快捷键 Ctrl+Alt+Shift+S 打开「Project Structure」窗口
  • 切换到「Modules」→「Sources」标签页
  • 找到你的 CSS 文件所在的目录(比如 src/gui),右键点击该目录,选择「Mark Directory as > Resources Root」
  • 点击「Apply」和「OK」保存配置,之后编译项目时,IntelliJ 会自动将该目录下的非 Java 文件复制到 out/production 对应路径中。

2. 使用正确的相对路径引用CSS

在FXML文件中引用

如果 CSS 和 FXML 位于同一目录,可使用以下两种方式:

<!-- 相对于当前FXML文件的路径 -->
<stylesheets>
    <URL value="@choicebox.css" />
</stylesheets>

或者

<!-- 从类根目录开始的绝对类路径 -->
<stylesheets>
    <URL value="classpath:/gui/choicebox.css" />
</stylesheets>

在Java代码中引用

// 从类根目录开始查找,注意开头的斜杠
getClass().getResource("/gui/choicebox.css");

3. 验证配置生效

执行「Build > Rebuild Project」重新编译项目,查看 out/production/DiamondCircle/gui 目录下是否存在 choicebox.css,若存在则配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:27:05