SceneBuilder无法打开FXML文件。

3

我正在使用JavaFX创建一个应用程序。在打开场景构建器时,我收到了以下错误提示:“无法打开Loggin.fxml文件。打开操作失败,请确保所选文件是有效的fxml文档。”

点击“显示详情”后,它显示了以下错误信息:

java.io.IOException: javafx.fxml.LoadException: 
/F:/Anusha/stophubsourcetree3/src/application/GetStarted.fxml

    at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:92)
    at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:80)
    at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:95)
    at com.oracle.javafx.scenebuilder.kit.editor.EditorController.updateFxomDocument(EditorController.java:2370)
    at com.oracle.javafx.scenebuilder.kit.editor.EditorController.setFxmlTextAndLocation(EditorController.java:655)
    at com.oracle.javafx.scenebuilder.app.DocumentWindowController.loadFromFile(DocumentWindowController.java:386)
    at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.performOpenFiles(SceneBuilderApp.java:579)
    at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleOpenFilesAction(SceneBuilderApp.java:447)
    at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleLaunch(SceneBuilderApp.java:427)
    at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStartGeneric(AppPlatform.java:139)
    at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStart(AppPlatform.java:106)
    at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.start(SceneBuilderApp.java:371)
    at com.sun.javafx.application.LauncherImpl$8.run(LauncherImpl.java:837)
    at com.sun.javafx.application.PlatformImpl$7.run(PlatformImpl.java:335)
    at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301)
    at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
    at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
    at java.lang.Thread.run(Thread.java:744)
Caused by: javafx.fxml.LoadException: 
/F:/Anusha/stophubsourcetree3/src/application/GetStarted.fxml

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2617)
    at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2864)
    at javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2708)
    at javafx.fxml.FXMLLoader.processProcessingInstruction(FXMLLoader.java:2677)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2517)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425)
    at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:89)
    ... 22 more
Caused by: java.lang.ClassNotFoundException: com.jfoenix.controls.JFXTextField
    at java.lang.ClassLoader.findClass(ClassLoader.java:530)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2932)
    at javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2921)
    at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2862)
    ... 27 more

我的main.java文件:

package application;

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


public class Main extends Application
{

    @Override

    public void start(Stage primaryStage)
    {
        try
        {
            Parent root =FXMLLoader.load(getClass().getResource("/application/GetStarted.fxml"));
            Scene scene = new Scene(root);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.setTitle("LOGIN");
            primaryStage.setResizable(false);
            primaryStage.show();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

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

}

看起来你没有在SceneBuilder的库中包含第三方库的jar文件。请参考https://dev59.com/E10b5IYBdhLWcg3wGN_f,这是一个类似的问题(尽管是不同的库)。 - James_D
我在哪里可以找到第三方库的那些jar文件? - mistletoe
嗯,无论您把它们放在哪里?如果您正在使用第三方库,则可能已经下载并安装了它。只有您知道在哪里。 - James_D
谢谢帮助! :) 我懂了。 - mistletoe
2个回答

2
问题在于当前版本的SceneBuilder(Scene Builder是8.2.0版本,发布于2016年5月18日)打开时必须先下载库文件并打开fxml文件。这就像是一个bug,我会找到链接并发布它...尽管它将在下一个更新中修复。 此版本的解决方案: 1)首先打开SceneBuilder 2)现在打开您的fxml/fxml文件/文件

好的,但还有其他方法吗?我又遇到了问题。你提供的解决方案是有效的。但如果可以使用“使用SceneBuilder打开”选项打开FXML文件,那就太好了。 - mistletoe
@mistletoe 我的意思是,必须打开 SceneBuilder,无论你是否已经打开了文件。然后诀窍就在这里:只要 SceneBuilder 已经打开,你就可以在 Eclipse 或者任何你有 FXML 文件的地方双击它(前提是 SceneBuilder 已经打开,你只需要一个实例即可加载自定义库)。不需要从 SceneBuilder 菜单中打开 :).... - GOXR3PLUS
@mistletoe 在下一个版本的 SceneBuilder 中将会修复这个问题,目前只有一些棘手的方法可用,这是一个已知的问题。 - GOXR3PLUS
非常感谢!:) :) - mistletoe
@mistletoe 祝你愉快 - GOXR3PLUS

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接