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

Maven JavaFX项目无法使用GetResource找到FXML文件?

西门马鲁
2023-03-14

我有一个标准的(非JavaFX)MavenJava项目。它应该做的第一件事是加载一个. fxml文件,但是我似乎无法使用getClass(). getResources()找到它。

这是不寻常的,因为此项目是从标准Java项目导入的,该项目运行良好,没有错误。

以下是主要方法:

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

@Override
public void start(Stage stage) throws Exception {
    Main_PanelController controller = new Main_PanelController(this);
    FXMLLoader loader = new FXMLLoader(getClass().getResource("Main_Panel.fxml"));
    loader.setController(controller);
    URL url = getClass().getResource("Main_Panel.fxml");
    System.out.println("URL: " + url);
    System.exit(0);
    Parent root = loader.load();
    Scene scene = new Scene(root);
    stage.setScene(scene);
    stage.getIcons().add(new Image(new FileInputStream(Paths.get("Pictures", "SBU Emblem.png").toFile())));
    stage.setAlwaysOnTop(true);
    stage.setTitle("Simple Knisley Citation Tool α 0.5");
    stage.setResizable(false);
    stage.show();
}

URL总是返回为null

我有System.out.println作为测试方法,看看URL对象是否返回为null。根据我所读到的关于getClass(). getResources()的所有内容,它应该得到与调用类相同的包中的任何对象,这Main_Panel.fxml是。

以下是Clean之后target文件夹中的Jar文件结构

META-INF/
META-INF/MANIFEST.MF
com/
com/protonmail/
com/protonmail/sarahszabo/
com/protonmail/sarahszabo/simpleknisley/
com/protonmail/sarahszabo/simpleknisley/core/
com/protonmail/sarahszabo/simpleknisley/core/CitationDiskManager.class
com/protonmail/sarahszabo/simpleknisley/core/Main_PanelController.class
com/protonmail/sarahszabo/simpleknisley/core/CitationGenerator$GeneratorType.class
com/protonmail/sarahszabo/simpleknisley/core/CitationGenerator.class
com/protonmail/sarahszabo/simpleknisley/core/Main.class
.netbeans_automatic_build
META-INF/maven/
META-INF/maven/com.protonmail.sarahszabo.simpleknisley/
META-INF/maven/com.protonmail.sarahszabo.simpleknisley/Simple-Knisley/
META-INF/maven/com.protonmail.sarahszabo.simpleknisley/Simple-Knisley/pom.xml
META-INF/maven/com.protonmail.sarahszabo.simpleknisley/Simple-Knisley/pom.properties

我在Kubuntu 18.04仿生海狸的Netbeans 8.2上使用Java 8171


共有1个答案

章高爽
2023-03-14

这里有一些问题。

>

  • Maven期望(默认情况下)资源位于src/main/resources目录中。默认情况下,它只从src/main/java复制java文件。因此,将您的fxml文件移动到src/main/resources/com/protonmail/sarahszabo/simpleknisley/core/main_面板。fxml

    getClass(). getResources()期望您提供要加载的资源的完整路径。所以在你的情况下:getClass(). getResources("/com/质子邮件/sarahszabo/simpleknisley/core/Main_Panel.fxml")

    使用getClass()。getClassLoader()。getResource()允许您将要加载的资源的位置指定为要调用它的类的相对路径:

    getClass().getClassLoader().getResource("Main_Panel.fxml")
    

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

    • 为了学习JavaFX,我使用IntelliJ IDEA创建了我的第一个项目,并将该项目导出为Eclipse项目。当我在这两个IDE中运行项目时,一切都运行得很好。不幸的是,在构建项目并尝试运行.jar或.exe文件之后,我得到了一个异常,我认为问题出在FXMLLoader中,它无法找到fxml文件。 项目层次结构

    • 我正在使用JFrog artifactory 3.2.1.1和Maven 3.2.1。 我上传了一个已构建的项目,该项目存在于存储库浏览器下的libs-snapshot-local中。如果我浏览到com.foo.project,我会在artifactory浏览器中看到project-1.0-20151113.133436-1.jar文件以及pom和元数据。 我只是得到: 无法执行目标org.apa

    • 我试图建立一个具有以下依赖关系的应用程序。 这是我在红帽网站上找到的一个例子-http://www.jboss.org/quickstarts/eap/helloworld-jms/ 我正在使用Netbeans 8.0.2。(还在dos和eclipse中使用Maven命令进行了尝试)我在构建时遇到了一个错误,下面是相同的日志: 我可以在以下路径找到文件: https://maven.reposit

    • 项目/ SRC/ 主/ Java/ 资源/ baselayout.fxml 不是应该有用吗?我本来工作得很好,但突然就不是了。我不知道还能做什么。

    • 我想知道是否有一个选项可以从表视图将添加到中。 我的程序经常更新 ,因此我想从中删除所有项,并将字符串变量名称添加到中。 我用JavaFX Scene Builder设置了我的程序。我的表有固定的id: cardsTable,我的Colum有id cardsColton。 有什么建议吗?