读取文件“更改”我的路径并且FXMLLoader失败

时间:2014-06-02 14:09:59

标签: javafx-8 fxml

我一直在努力处理我的代码:

    private void longStart() {
    Task task = new Task<Void>() {
        @Override
        protected Void call() throws Exception {
            System.out.println("Iniciando");
            IOManager io = new IOManager();
            System.out.println("Buscando archivo Jugadores");
            boolean b = io.BuscarData("Jugadores");
            System.out.println("Armando Grupos");
            if (!b) {
                ServiceManager.CargarGrupos(b);
            } else {
                if (!io.BuscarData("Grupos")) {
                    ServiceManager.CargarGrupos(b);
                }else{
                    Grupo.setaGrupos(io.LeerGrupos());  
                }
            }
            System.out.println("Cargando Partidos");
            ServiceManager.CargarPartidos();
            System.out.println("Calculando puntos de Grupos");
            ServiceManager.ActualizarPuntos();
            //ServiceManager.CargarGoleador();
            ready.setValue(Boolean.TRUE);
            notifyPreloader(new StateChangeNotification(StateChangeNotification.Type.BEFORE_START));
            return null;
        }
    };
    new Thread(task).start();
}

简单地说,它的作用是询问文件是否存在,如果不存在,则它与Web服务连接,进行一些无意义的对象创建,最后创建文件。在所有这些喧嚣之后,我可以像这样开始我的用户界面:

    try {
                    root = FXMLLoader.load(getClass().getResource("/fxml/Main.fxml"));
                } catch (IOException ex) {
                    Logger.getLogger(Brasuca.class.getName()).log(Level.SEVERE, null, ex);
                }
                stage.setTitle("Brasil 2014");
                stage.setScene(new Scene(root, 1140, 705));
                stage.getIcons().add(new Image("/img/trophy.png"));
                stage.setResizable(false);
                stage.show();

当它寻找的文件不存在时,它可以正常工作。但是当它存在时,它会尝试阅读它:

    public ArrayList<Grupo> LeerGrupos() throws FileNotFoundException, IOException, ClassNotFoundException {
    ArrayList<Grupo> ag;
    try (ObjectInputStream obj = new ObjectInputStream(new FileInputStream("data/Grupos.jug"))) {
        ag = (ArrayList<Grupo>) obj.readObject();
    }
    return ag;
}

哪个也可以,但是当FXMLLoader尝试加载时,它会失败并抛出此异常:

    GRAVE: null
    javafx.fxml.LoadException: 
    file:/C:/Users/Francisco/Documents/NetBeansProjects/Brasuca/dist/run613176200/Brasuca.jar!/fxml/Main.fxm

另外,如果我像这样执行加载程序:

    root = FXMLLoader.load(getClass().getResource("fxml/Main.fxml"));

异常变为:

    Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Location is required.

任何帮助都是绝对的

1 个答案:

答案 0 :(得分:0)

root = FXMLLoader.load(getClass().getResource("/fxml/Main.fxml"));

别忘了&#34; /&#34;当你尝试加载fxml类时,因为它是另一个包。