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

在java中更改javafx文件的路径

林弘壮
2023-03-14

我有一个Maven项目,我试图使用javafx(我使用Eclipse)我想改变我的文件的路径。我有过

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

这在下一个文件夹结构中运行良好

src
  main
    java
      com
        projectFolder
           main.java
      application
        Main.fxml

但是我想要像

src
  main
    java
      com
        projectFolder
           main.java
        application
           Main.fxml

我尝试了Parent root=fxmloader。加载(getClass()。getResource(“/com/application/Main.fxml”) 但不起作用。

我得到下一个错误

   [JavaFX Application Thread] ERROR com.application.Main - javafx.fxml.LoadException: 
/C:/Users/user/workspace/git/project/target/classes/com/application/Main.fxml:15

有人知道它怎么了吗?


共有2个答案

公孙森
2023-03-14

假设你和我确实有相同的项目结构,如下图所示:

为了加载FXML文件,您应该使用一个完整的路径,如下面的示例:

package main.java.com.projectFolder;

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

public class Main extends Application {

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

    @Override
    public void start(Stage primaryStage) throws Exception {

        FXMLLoader loader = new FXMLLoader(this.getClass().getResource("/main/java/com/application/Main.fxml"));

        Parent root = loader.load();
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }
}

现在,如果您实际使用相对路径,例如:

FXMLLoader loader = new FXMLLoader(this.getClass().getResource("../application/Main.fxml"));

只要您在Eclipse运行时环境中编译和运行代码,上述方法也可以使用。当您将项目导出到JAR文件并尝试执行它时,您将得到与开始时相同的错误。实际上,您可以在类似的文章中阅读到这一点:它在Eclipse中运行正常,但不能作为运行。jar文件

编辑:对于maven项目,您应该考虑将FXML文件重新定位到src/main/Resources/文件夹。你可以在这篇文章中找到一个:JavaFX和maven: NullPointerExcture:位置是必需的

苏野
2023-03-14

我不建议混淆文件结构。。。

但是在这种情况下,我相信您需要使用资源的相对路径:.../Application/Main.fxml

getClass()。getResource()要求资源与调用类位于同一目录中。它不是,所以您需要Java用备份一个目录

 类似资料:
  • 我在文本编辑器中有一个另存为...功能。我想做一个另存为,保存到一个新文件,但是我要保存的永久文件现在应该总是这个新文件。所以当我点击我的另一个按钮,保存,而不是保存到以前的位置,将继续保存到用JFileChooser选择的位置。 我有一个名为currentFile的文件对象,它应该链接到通过“另存为”选择的文件。我目前正在通过在我的按钮操作执行功能中创建一个名为fileName的文件,然后将cu

  • 问题内容: 我正在尝试编写一个node.js脚本,该脚本监视文件目录中的更改,然后打印更改的文件。如何修改此脚本,以便它监视目录(而不是单个文件),并在更改文件时显示目录中的文件名? 问题答案: 试试Chokidar: Chokidar仅使用fs即可查看文件,从而解决了一些跨平台问题。

  • 问题说明了一切。我有一个文件对象,它指向。 如果我打电话给档案。getAbsolutePath()则返回 我的问题是- 我们可以将文件对象内的路径更改到不同的位置吗? 如果是,那怎么做? 谢谢

  • 问题内容: 我想动态更改log4j日志文件的路径和文件名。 我已经阅读了很多页面,几乎每个页面都告诉我应该使用此处的系统属性: [如何动态更改log4j日志文件?](http://codingdict.com/questions/141150 所以我的log4j.properties文件看起来像这样: 在我的主要方法中,我将设置新的系统属性: 但是我只是得到一个错误: 当我尝试使用以下命令读取设置

  • 我有一个应用程序必须有可折叠的面板,所以在Java FX中的TitledPane和Accordion设置是一个自然的候选者。 在应用程序中,当容器折叠时,我需要有容器的自定义头。我在TitledPane的css文档中看到,头实际上是一个HBox和各种其他组件。 http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.htm