getClass().getResource(“/”) renvoie la valeur null dans la ligne de commande
J'essaie de lire un fichier dans mon projet maven /src/main/resources/file.txt.
Je suis en utilisant
URL url=this.getClass().getResource("/");
String filePath=url.getPath()+"file.txt";
url objet obtient la valeur correcte quand c'est le passage de l'éclipse.
Mais, quand je le paquet le pot et l'exécuter en ligne de commande:
jar -cp myjar.jar SampleTest
Il renvoie la valeur null 'url' objet et lève une exception NullPointerException dans la ligne suivante.
J'ai ouvert mon Pot de fichiers avec l'explorateur de fichiers et vérifié. Il a le "file.txt" en "/" emplacement à l'intérieur du Bocal.
Où vais-je tort ?
vous devriez essayer
URL url= getClass().getResource("/file.txt");
String filePath=url.getPath();
OriginalL'auteur user691197 | 2012-06-20
Vous devez vous connecter pour publier un commentaire.
Il y a (souvent) pas de répertoires à l'intérieur de fichiers jar. À cet effet, il sera de retour
null
.Si vous voulez obtenir le fichier, vous pouvez obtenir cette ressource directement:
Ou tout simplement:
Comme je l'ai écrit dans ma réponse: Il n'y a pas de répertoires à l'intérieur de fichiers jar - par exemple, Vous ne pouvez pas obtenir une ressource (répertoire) qui n'existe pas. Lorsque vous exécutez le programme à partir d'eclipse votre classpath points d'un chemin de fichier/répertoire. Dans cet environnement, vous pouvez obtenir les informations de répertoire à l'aide de
Class.getResource
.Est-il possible d'obtenir une URL du répertoire dans un bocal à l'aide de getResource("/dir") en jouant sur le projet pom.xml d'une certaine façon ??
C'est possible, mais un hack, voir cette page pour plus d'informations.
OriginalL'auteur dacwe
Vous devez déplacer ce fichier dans votre CLASSPATH et obtenir de cette façon:
file.txt
est dans/
.fichier semble dans le classpath
Vous êtes en supposant que c'est dans le classpath. Est-ce que votre POT ont un manifeste, avec le Chemin de Classe entrées? Sinon, pour en ajouter un.
OriginalL'auteur duffymo