当前位置: 首页 > 知识库问答 >
问题:

无法通过FXMLLoader加载fxml文件(InvocationTargetException)

酆景辉
2023-03-14

我第一次尝试使用JavaFx与Maven。通过这个主题:链接IntelliJ不能识别JavaFX 11与OpenJDK 11,我配置的项目。但是无论我做什么,我都不能加载fxml文件,因为"getClass(). getResources(path)"返回null。

我更改了路径,以“/”开头,没有,更改了包,创建了包,删除了包,更改了模块信息中的引用,但这不起作用。

结构:https://ibb.co/Hhwzk8b

module LogAggregator {
    requires javafx.fxml;
    requires javafx.controls;

    opens fxml to javafx.fxml;
    exports com.github.PavelKisliuk;
}

//----------------------------------------------------

public class Main extends Application {
    public void start(Stage primaryStage) throws Exception {

              String path = "fxml/Input.fxml";
              FXMLLoader fxmlLoader = new FXMLLoader();
      fxmlLoader.setLocation(getClass().getResource(path));
      Parent fxmlMainWindow = fxmlLoader.load();

      //start-up window
      //-----------------------------------------------
      Scene s = new Scene(fxmlMainWindow);
      primaryStage.setScene(s);
      primaryStage.show();
  }

  public static void main(String... args) {
      launch(args);
  }
}

也许有人知道这个问题,可以帮助我。没有maven,我没有任何问题。

决定

这样的路径:

String path = "/fxml/Input.fxml";

加上模块信息的两个字符串:

opens com.github.PavelKisliuk.controller to javafx.fxml;
exports com.github.PavelKisliuk.controller to javafx.fxml;

共有1个答案

彭衡
2023-03-14

您的主类似乎在包com中。吉胡布。PavelKisliuk,但资源位于fxml下。在这种情况下,您使用的相对路径解析为不存在的com。吉胡布。PavelKisliuk/fxml/Input。fxml

解决:

  1. 首选:将资源移动到“com”。吉胡布。PavelKisliuk'
  2. 将主类移出'com'。吉胡布。帕韦尔基利乌克'

希望这能帮助...

 类似资料:
  • 我正在尝试实现下面所示的基本JavaFX示例:http://docs.oracle.com/JavaFX/2/get_started/fxml_tutorial.htm。我能够让基本的东西工作(以编程方式创建gui)和使用css,但我遇到了FXMLLoader的问题。 java版本是这样的: 我不是Java专家,但我不认为FXMLLoader对象是实例化的IE。没有语句。那么是从哪里来的呢? nu

  • 问题内容: 当我在JavaFX中调用FXMLLoader#load()时会发生什么? 假设FXML控制器扩展了具有构造函数的类。是否可以保证构造函数将被调用?如果没有,将如何创建该对象的新实例?例如,在下面的代码中,是否将调用TextField()构造函数? 我已经尝试过搜索这个,但是除了“从FXML文档中加载对象层次结构”之外,似乎没有关于它的文档。来自http://docs.oracle.co

  • 我已经试着搜索了这篇文章,但是除了“从FXML文档加载对象层次结构”之外,似乎没有关于它的文档。摘自http://docs.oracle.com/javafx/2/api/javafx/fxml/fxmlloader.html 你的回答将不胜感激。多谢!

  • 由于某种原因,我无法将FXML文件中定义的节点加载到实例变量中。我制作了这两个测试文件: 和都被打印为而它们本应被注入FXML文件中定义的节点,有人知道这里出了什么问题吗?当我在Scene Builder中编辑FXML文件时,controller类和字段都被找到并识别,所以应该不会有任何问题。

  • 大家好,我是fxml的新手,所以请忽略我的愚蠢的问题,这里有几个东西,我尝试了两天,但没有成功 > 从表中删除空白,即表大小应达到可用行数(行数不同) 当用户单击表行(任何显示值)时,新的fxml文件将在定位窗格(显示tableview)中打开,分配给tableview,但我想在主视图中显示它(这里显示的是整个表和两个文本字段以及主堆栈后面的搜索按钮)主视图(其他只有标题和侧栏的fxml文件) 如

  • 在Maven项目中运行main类时,我得到: 应用程序启动方法中的异常 据我所知,这是因为FXML文件无法加载。 这是文件系统层次结构 在Eclipse(src内部) 阅读apache的maven指南和其他statck问题,下面的代码片段似乎是创建并指向文件的正确方法。 但是这段代码将抛出前面声明的异常。 当我试图找出代码中异常