La lecture d'une ressource avec BufferedReader
Je suis en train de lire une ressource qui sera inclus dans un .JAR, mais j'obtiens un nullPointer
pour les éléments suivants:
bReader = new BufferedReader(new InputStreamReader(
this.getClass().getResourceAsStream("resources/" + fileName)));
À l'aide d'un Fichier cependant, fonctionne très bien..
bReader = new BufferedReader(new FileReader(new File("resources/" + fileName)));
Vous pouvez imprimer la trace de la pile de l'erreur s'il vous plaît.
Ce qui est totalement quelified nom de
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.io.Reader.<init>(Reader.java:61), à java.io.InputStreamReader.<init>(InputStreamReader.java:55)
Ce qui est totalement quelified nom de
this.getClass()
, et où est le fichier dans le pot?Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.io.Reader.<init>(Reader.java:61), à java.io.InputStreamReader.<init>(InputStreamReader.java:55)
OriginalL'auteur Skogen | 2013-03-03
Vous devez vous connecter pour publier un commentaire.
En supposant que votre IDE ou Maven ou processus de création d'inclure le contenu de "ressources" dans le bocal à la racine, essayez de trouver à "/".
Mise à JOUR:
Assurez-vous que les "ressources" le dossier est configuré comme un dossier source.
Je peux trouver le fichier à l'aide de "/" si les fichiers sont faites glisser-déposer dans le dossier du projet, mais il ne peut pas être trouvé à partir d'un exécutable jar.
Voir la mise à jour.
OriginalL'auteur sgp15
Est-ce un Printemps cadre du projet? Essayez:
De ressources à charge est assis dans le répertoire src/main/resources répertoire:
OriginalL'auteur ranma2913
Ensemble de "ressources" dossier comme un dossier de ressources.
Essayez ce code:
OriginalL'auteur brandy
Contrairement à
getClassLoader().getResourceAsStream(filename)
, la version que vous utilisezgetClass().getResourceAsStream(filename)
utilise un chemin d'accès relatif à la classe de l'emplacement, plutôt que le chemin de la classe racine. Vous devez soit utiliser un chemin absolugetClass().getResourceAsStream("/" + filename)
ou utiliser leClassLoader
version.Aussi, assurez-vous que "ressources" est sur votre chemin de classe (si vous utilisez Maven, il doit être "src/main/resources" par rapport à votre pom.xml). Si oui, vous n'avez pas besoin d'inclure des "ressources" dans votre nom de fichier, parce que c'est le chemin de la classe racine.
OriginalL'auteur Kidburla
C'est parce que de la classe de lecteur et le fichier à lire dans différents paquets. Lorsque
this.getClass().getRasourceAsStream("resource/file_name")
est appelé, il va rechercher le répertoire des ressources dans le répertoire du package dans lequel le lecteur de la classe présente si trouvé, alors il sera de la recherche pour "file_name" fichier. Donc, si votre fichier n'est pas présent, elle renvoie null.Dans ce cas, vous avez besoin de revenir à partir de l'actuel fichier de classe de lecteur répertoire en conséquence, et alors vous devez donner le chemin d'accès à votre fichier. De retour à partir d'un répertoire qui doit nous servir
../
Par exemple, si
Lecteur de classe du package :
package com.abc.util;
Fichier présent :
com.abc.template;
Ensuite, vous devez appeler le
getResourceAsStream()
méthode comme suit.OriginalL'auteur Rashanand
this.getClass().getResourceAsStream("resources/" + fileName)
charges de fichier à partir de classpathnew File("resources/" + fileName)
charges de fichier à partir de votre travail dir(la racine du projet dir dans eclipse). Pour faire les premiers travaux, vous devez ajouter le jar contenantresources
dir à votre classpath.OriginalL'auteur ericson