J'ai eu des problèmes avec l'aide de l' getClass().getResource("filename.txt")
méthode.
À la lecture de l'Java docs instructions, si la ressource n'est pas dans le même package que la classe que vous essayez d'accéder à la ressource, alors vous devez donner le chemin relatif à partir avec '/'
. La stratégie recommandée est de mettre vos fichiers de ressources en vertu d'un "ressources" dossier dans le répertoire racine. Ainsi, par exemple, si vous avez de la structure:
src/main/com/mycompany/myapp
vous pouvez ensuite ajouter un dossier de ressources tel que recommandé par maven:
src/main/resources
en outre, vous pouvez ajouter des sous-dossiers dans le dossier de ressources
src/main/resources/textfiles
et dire que votre fichier s'appelle myfile.txt
de sorte que vous avez
src/main/resources/textfiles/myfile.txt
Maintenant c'est ici que la bête problème de chemin d'accès. Disons que vous avez une classe dans votre com.mycompany.myapp package
, et vous souhaitez accéder à l' myfile.txt
le fichier depuis votre dossier de ressources. Certains disent que vous avez besoin pour donner à l':
"/main/resources/textfiles/myfile.txt" path
ou
"/resources/textfiles/myfile.txt"
ces deux sont mauvais. Après j'ai couru mvn clean compile
, les fichiers et les dossiers sont copiés dans le:
myapp/target/classes
dossier. Mais le dossier de ressources n'est pas là, seulement les dossiers dans le dossier de ressources. Donc, vous avez:
myapp/target/classes/textfiles/myfile.txt
myapp/target/classes/com/mycompany/myapp/*
si le chemin d'accès correct à donner à l' getClass().getResource("")
méthode:
"/textfiles/myfile.txt"
ici, il est:
getClass().getResource("/textfiles/myfile.txt")
Ce n'est plus de retour null, mais sera de retour à votre classe.
J'espère que cela aide quelqu'un. Il est étrange pour moi, que l' "resources"
dossier n'est pas copié, mais seulement les sous-dossiers et des fichiers directement dans l' "resources"
le dossier. Il semblerait logique pour moi que l' "resources"
dossier doit aussi être trouvé sous "myapp/target/classes"