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.!!!