在javafx中,从另一个包加载FXML文件时是否出现错误?

在javafx中,从另一个包加载FXML文件时是否出现错误?,java,eclipse,javafx,fxml,Java,Eclipse,Javafx,Fxml,我在从不同的包加载fxml文件时遇到问题 项目结构 加载FXML文件PlayArea.java的类如下所示: package controller; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; /** * * @author ba

我在从不同的包加载fxml文件时遇到问题

项目结构

加载FXML文件PlayArea.java的类如下所示:

package controller;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 * @author badar
 */
public class PlayArea extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("/gui/FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}
我的fxml文件是FXMLDocument.fxml


编辑:

错误消息:


如果右键单击并打开该文件,您可以在fxml文件本身中设置控制器。您将在该文件中找到属性,在那里您将有一个名为controller的标记,您可以键入确切的文件夹路径

FXML EG


问题出在您的这条线路上

  Parent root = FXMLLoader.load(getClass().getResource("/gui/FXMLDocument.fxml"));
换成

  Parent root = `FXMLLoader.load(getClass().getResource("../gui/FXMLDocument.fxml"));`
如果您仍然得到错误,那么 在包的外部创建一个文件,即在src文件夹中,比如说Main.class

现在用这个


fxmloader.load(Main.class.getResource(“gui/FXMLDocument.fxml”)

更新以前的答案

这是我们尝试过的,而且效果很好

Parent root = FXMLLoader.load(getClass().getResource("/fxml/Main.fxml"));
                Scene scene = new Scene(root, 300, 275);            
                stage.setTitle("FXML Welcome");
                stage.setScene(scene);
                stage.show();


希望这能解决查询问题

我必须更改两行,才能从另一个数据包中的控制器正确打开FXML文件:

root = loader.load(Main.class.getResource("document.fxml").openStream());
scene.getStylesheets().add(Main.class.getResource("application.css").toExternalForm());

这里没有getClass(),而是Main.class。

确切的错误是什么?你能包括日志信息吗?假设找不到该文件,您是否尝试过将
“gui/FXMLDocument.fxml”
作为路径字符串?可能是eclipse的问题,没有在类路径中包含fxml文件,但也可能是控制器类的问题,这是无法确定的,除非您发布错误消息+堆栈跟踪。@fabian请包含log@n247s我添加了错误消息。@fabian我包括了错误消息,这与问题中的fxml有何不同?这里也指定了
fx:controller
属性,它似乎使用了正确的控制器类的完全限定类名。@Rahul请再次阅读我的问题!我已经在FXMLDocument.fxml中做了这件事,但问题是当我尝试在不同的包中使用时,它不起作用。问题仍然在这一行。第一次,当我仅在一个包中使用所有的.fxml和.java文件时,它工作得很好。但当我想分装时,它就不起作用了(谢谢你,先生!我意识到了我的问题。@Sudo,很乐意帮忙:)
root = loader.load(Main.class.getResource("document.fxml").openStream());
scene.getStylesheets().add(Main.class.getResource("application.css").toExternalForm());