17

I've tried numerous methods now, including FilenameUtils.normalize() from commons IO, but I can't seem to be able to get a resource in another folder to get a Java FXML file.

The code is the following

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

Where the desired FXML file is:

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

How do I best get the desired file's URL?

Thank you!

calben
  • 1,328
  • 3
  • 18
  • 33

2 Answers2

17

You can get resources relative to the Class or the context root. In your example putting / at the start of the string if thats your package structure in your application. Try

getClass().getResource("/gui/dialogues/plugins/PluginSelection.fxml")
Alex Edwards
  • 1,613
  • 3
  • 24
  • 48
  • changed it to: root = FXMLLoader.load(getClass().getResource("/pdpro/gui/dialogues/plugin/PluginSelection.fxml")); and it works like a charm. Thanks! – calben Jan 18 '13 at 16:05
  • 4
    If my resource was four directories higher than the class (`../../../../resource`), would I just type `////resource`? – Cardinal System Dec 25 '17 at 18:16
2

It seems to me that if we use .getResource only when searching in marked as resource folder. Otherwise, even if folder path is correct, but it's not marked as resource folder we'll got an error. So, I do this way:

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