ClassLoader getResourceAsStream renvoie la valeur null

Ma structure de répertoire de projet (dans Eclipse):

MyProject/ src/ --> "source directory" on Eclipse's classpath/buildpath com.me.myapp Driver myconfig.txt 

Dans Driver , j’ai le code suivant:

 public class Driver { public static void main(Ssortingng[] args) { InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream("myconfig.txt"); if(is == null) System.out.println("input stream is null"); else System.out.println("input stream is NOT null :-)"); } } 

Lorsque je lance ceci, j’obtiens la sortie de console suivante:

 input stream is null 

Pourquoi? Ai-je placé myconfig.txt dans un emplacement incorrect? Est-ce que j’utilise incorrectement l’API ClassLoader? Autre chose? Merci d’avance!

Si c’est dans le même paquetage utiliser

 InputStream is = Driver.class.getResourceAsStream("myconfig.txt"); 

La façon dont vous l’avez

 InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("myconfig.txt"); 

Il cherche le fichier dans la racine du classpath. Vous pourriez utiliser

 InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("com/me/myapp/myconfig.txt"); 

Les règles de recherche sont expliquées dans le javadoc de ClassLoader#getResource(Ssortingng) et le javadoc de Class#getResource(Ssortingng) .

Si vous travaillez avec Maven, ajoutez les lignes suivantes sous la balise BUILD . Vous obtenez cette erreur lorsque vous exécutez l’application Web sur le serveur, mais qu’il n’y a aucune référence aux ressources sur le serveur.

Donc, ajoutez ceci le suivant dans votre POM.xml et voyez la magie.

   src/main/resources true  fileName.txt    src/main/resources true  fileName.wsdl    

S’amuser.!!!