IntelliJ IDEA – getClass (). GetResource (“…”) return null

J’utilise IntelliJ IDEA 13.1.5, je travaillais avec Eclipse. Je travaille sur l’application JavaFX, j’essaie de charger le fichier FXML dans ma classe MainApp à l’aide de getClass (). GetResource (). J’ai lu la documentation et j’ai essayé plusieurs idées, à la fin j’ai null .

C’est la hiérarchie:

dz.bilaldjago.homekode.MainApp.java

dz.bilaldjago.homekode.view.RootLayout.FXML

Voici l’extrait de code que j’ai utilisé:

FXMLLoader loader = new FXMLLoader(); loader.setLocation(getClass().getResource("view/RootLayout.fxml")); 

J’ai essayé une autre solution, telle que donner l’URL de la racine et utiliser le classLoader

le résultat est le même. Toute idée s’il vous plaît

Pour ceux qui utilisent Intellij Idea: vérifiez Settings -> Comstackr -> Resource patterns Types de Settings -> Comstackr -> Resource patterns .

Le paramètre contient toutes les extensions devant être interprétées comme des ressources. Si une extension ne respecte aucun modèle ici, class.getResource retournera la valeur null pour les ressources utilisant cette extension.

J’ai résolu ce problème en soulignant la resource root sur IDEA.

Right click sur un répertoire (ou simplement le nom du projet) -> Mark directory As -> Resource Root .

Recomstackr et se réjouir: P Espérer que cela fonctionne pour vous ~

Si votre projet est un projet maven, vérifiez le code cible pour voir si votre fichier .fxml existe. si ce n’est pas là, il suffit d’append

   src/main/java  **/*.xml  true   

dans votre pom.xml

J’ai arrêté d’essayer d’utiliser getClass().getResource("BookingForm.css"));

Au lieu de cela, je crée un object File, crée une URL à partir de cet object, puis je le passe dans getStyleSheets () ou setLocation () File file = new File(System.getProperty("user.dir").toSsortingng() + "/src/main/resources/BookingForm.css");

scene.getStylesheets().add(folder.toURI().toURL().toExternalForm());

Windows est sensible à la casse, pas le rest du monde. Également un jar java exécutable (format zip), les noms de ressources sont sensibles à la casse.

Meilleur renommer le fichier

 view/RootLayout.FXML 

à

 view/RootLayout.fxml 

Cela doit être fait en déplaçant le fichier d’origine et en en créant un nouveau.

Comstackz également dans un fichier jar et vérifiez que le fichier fxml a été ajouté au fichier jar (fichier zip). Lorsque non, les chemins de ressources IntelliJ sont traités par une autre réponse.

Soit dit en passant, ce chemin est relatif au chemin de package de getClass() . Sachez que si vous avez étendu cette classe, le chemin complet change, utilisez-le mieux:

 MainApp.class.getResource("view/RootLayout.fxml")