如何使用 Java getResource() 从父目录获取资源?

2022-09-03 01:58:36

我现在已经尝试了许多方法,包括来自commons IO的文件名Utils.normalize(),但我似乎无法在另一个文件夹中获取资源来获取Java FXML文件。

代码如下

  try {
     root = FXMLLoader.load(getClass().getResource("../plugin/PluginSelection.fxml"));
  } catch (IOException ex) {
     Logger.getLogger(QueueOperationsController.class.getName()).log(Level.SEVERE, null, ex);
  }

其中所需的 FXML 文件是:

gui
   dialogues
      plugins
         PluginSelection.fxml // desired file
      dataset
         QueueOperationsController // current class

如何最好地获取所需文件的 URL?

谢谢!


答案 1

您可以获取相对于 上下文根 的资源。在您的示例中,如果这是应用程序中的包结构,则将其放在字符串的开头。尝试Class/

getClass().getResource("/gui/dialogues/plugins/PluginSelection.fxml")

答案 2

在我看来,如果我们仅在标记为资源文件夹中搜索时使用.getResource。否则,即使文件夹路径正确,但未标记为资源文件夹,我们也会收到错误。所以,我这样做:

FileInputStream fileInputStream = new FileInputStream(new File("src/main/java/CRUD/bnkseekCRUD.fxml"));
    Parent root = loader.load(fileInputStream);

推荐