我正在泄露的课程中学习 JavaFX 编程。我在 Intellij IDEA 中有这个标准项目结构:
这是主类:
package aoizora.book;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application
{
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage stage) throws Exception
{
var fxml = getClass().getResource("book.fxml");
Parent root = FXMLLoader.load(getClass().getResource("../../../resources/book.fxml"));
stage.setTitle("Address Book");
stage.setMinHeight(600);
stage.setMinWidth(400);
stage.setScene(new Scene(root, 300, 275));
stage.show();
}
}
问题是我无法book.fxml从资源文件夹访问该文件。 getResource 方法返回 null。我应该怎么做才能得到这个文件而不出错?
如果它很重要,我的虚拟机选项是:
--module-path C:\JavaFX\lib --add-modules=javafx.controls,javafx.fxml

您指定的路径不正确。
你的错误是你指定了
resources,但是这是不能做到的,因为jar它在创建时就被删除了,而且这../../也是多余的。例如,如果项目结构是这样的:
然后在
jar-e 中它将是这样的:因此,首先建议在
resources单独的文件夹中创建它,假设路径如下:资源/资产/fxml/book.fxml
然后你需要像这样打开文件: