web-dev-qa-db-fra.com

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 en utilisant getClass (). GetResource (). J'ai lu la documentation et j'essaye plusieurs idées, à la fin j'ai null .

Voici 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 comme 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

24
BilalDja

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

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

Recompiler et se réjouir: P J'espère que cela fonctionne pour vous ~

21
MewX

Pour ceux qui utilisent Intellij Idea: recherchez Settings -> Compiler -> Resource patterns.

Le paramètre contient toutes les extensions qui doivent être interprétées comme des ressources. Si une extension ne se conforme à aucun modèle ici, class.getResource retournera null pour les ressources utilisant cette extension.

16
stacky

si votre projet est un projet maven, vérifiez le code cible pour voir si votre fichier .fxml existe là-bas. s'il n'est pas là, il suffit d'ajouter

<resources>
        <resource>
            <directory>src/main/Java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>

dans votre pom.xml

3
Max Yan

TL; DR;

  1. Placez vos ressources dans le dossier resources.

  2. Utilisez-les avec une barre oblique avant leurs noms: getClass().getResource("/myfont.ttf");

Longue histoire;

Si vous utilisez Intellij IDEA et vous avez créé un projet Maven, vous devez placer vos ressources dans le dossier resources (marqué comme racine de la ressource par intellij lui-même) et ces ressources vont à la racine de votre application compilée.

Je veux dire, /resources/myfont.ttf ira à /myfont.ttf dans la version résultante.

Vous devriez donc l'obtenir via /myfont.ttf et pas myfont.ttf. Utilisez-le comme ceci:

getClass().getResource("/myfont.ttf");

Pas besoin de changer quoi que ce soit d'autre. Juste celui-ci m'a aidé.

1
AlwaysLearner

Selon suggestion, réponse mise à jour.

Étape 1

  1. Clic droit sur le projet
  2. Cliquez sur Marquer le répertoire comme
  3. Cliquez sur Sources Root

Étape 2

  1. Cliquez sur Fichier dans la barre de menus
  2. Cliquez sur Structure du projet… pour ouvrir le panneau des paramètres

Étape 3

  1. Cliquez sur l'onglet Modules
  2. Comme vous le voyez, aucun dossier de ressources n'a été ajouté en tant que racine de contenu
  3. Nous devons y ajouter un dossier de ressources

Étape 4

  1. Assurez-vous de cliquer sur le dossier de ressources
  2. Cliquez sur l'onglet Ressources après cela
  3. Vous verrez le dossier des ressources ajouté en tant que dossiers de ressources dans le panneau de droite

Réexécutez votre programme Java et maintenant il devrait fonctionner.

<--- Réponse précédente ---->

Correction d'un problème similaire aujourd'hui en ajoutant un dossier de ressources dans l'onglet Ressource de l'IDE IntelliJ

J'espère que cela t'aides. Aussi, tutoriel de détails .

0
App Shah