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

时间:2019-09-01 15:34:52

标签: java maven javafx

我第一次尝试将JavaFx与Maven结合使用。通过以下主题:链接IntelliJ can't recognize JavaFX 11 with OpenJDK 11,我配置了项目。但是无论如何我都无法加载fxml文件,因为“ getClass()。getResource(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);
  }
}

也许有人知道这个问题,可以为我提供帮助。没有行家,我不会有任何问题。

决定

这样的路径:

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

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

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

1 个答案:

答案 0 :(得分:0)

您的Main类似乎在软件包com.gihub.PavelKisliuk中,但是资源在fxml下。在这种情况下,您使用的相对路径会解析为不存在的com.gihub.PavelKisliuk/fxml/Input.fxml

解决方案:

  1. 可取:将资源移至“ com.gihub.PavelKisliuk”
  2. 将主类移出“ com.gihub.PavelKisliuk”

希望这对您有帮助...