首页 > 解决方案 > Gradle + JavaFX - 构建“资源”目录的正确方法是什么?

问题描述

我有一个带有 Gradle 构建工具的 JavaFX 项目。构建src/main/resources文件夹的正确方法是什么,以便我可以通过简单的代码行轻松访问*.fxml和:*.css

Parent root = FXMLLoader.load(getClass().getResource("xxx.fxml"));


我在本教程build.gradle中使用JavaFX 的 Gradle 插件和文件,它有一个简单的项目树,如下所示:

.
├── src.main
|    ├── java
|    |   ├── org.openjfx
|    |   |   ├── MainApp.java
|    |   └── └── FXMLController.java
|    ├── resources
|    |   ├── org.openjfx
|    |   |   ├── scene.fxml
└──  └── └── └── styles.css

这样,MainApp.java可以scene.fxml使用getResource("scene.fxml").


但是,如果javaresources目录结构不匹配,假设我的项目树是这样的,这样我就可以将fxml文件和css文件分开:

.
├── src.main
|    ├── java
|    |   ├── org.openjfx
|    |   |   ├── anotherPackage 
|    |   |   |   ├── MainApp.java
|    |   └── └── FXMLController.java
|    ├── resources
|    |   ├── org.openjfx
|    |   |   ├── layouts
|    |   |   |   ├── scene.fxml
|    |   |   ├── styles
└──  └── └── └── └──styles.css

现在MainApp.java必须scene.fxml加载getResource("../layouts/scene.fxml")


我是 Gradle 和 JavaFX 的新手,我想知道管理包括 fxml、CSS 以及图片等在内的资源的正确方法是什么。ps


。对不起,如果我没有正确地问问题。

标签: javagradlejavafx

解决方案


iirc,资源目录结构应该反映包结构。看看https://www.eviltester.com/2017/12/resource-files-for-tests-java-maven.html


推荐阅读