Je charge un fichier texte à partir d'un package dans un JAR compilé de mon projet Java. La structure de répertoire pertinente est la suivante:
/src/initialization/Lifepaths.txt
Mon code charge un fichier en appelant Class::getResourceAsStream
pour retourner un fichier InputStream
.
public class Lifepaths {
public static void execute() {
System.out.println(Lifepaths.class.getClass().
getResourceAsStream("/initialization/Lifepaths.txt"));
}
private Lifepaths() {}
//This is temporary; will eventually be called from outside
public static void main(String[] args) {execute();}
}
L'impression sera toujours imprimée null
, peu importe ce que j'utilise. Je ne sais pas pourquoi ce qui précède ne fonctionnerait pas, alors j'ai également essayé:
"/src/initialization/Lifepaths.txt"
"initialization/Lifepaths.txt"
"Lifepaths.txt"
Aucun de ces travaux. J'ai lu de nombreuses questions sur le sujet jusqu'à présent, mais aucune d'entre elles n'a été utile - généralement, ils disent simplement de charger les fichiers en utilisant le chemin racine, ce que je fais déjà. Cela, ou simplement charger le fichier à partir du répertoire actuel (juste charger filename
), que j'ai également essayé. Le fichier est en cours de compilation dans le JAR à l'emplacement approprié avec le nom approprié.
Comment résoudre ce problème?
Lifepaths.class
. Cela étant dit, pourquoigetClassLoader()
permet-il de fonctionner? (Aussi, n'hésitez pas à poster une réponse!)
Lifepaths.getClass()
? Il n'y a pas de méthode statique de ce type définie dans Object ...
getResource(String)
. BTW - J'ai toujours eu des problèmes pour faire fonctionner l'un ou l'autre dans un static
contexte. Le problème est fondamentalement que le chargeur de classe obtenu est celui destiné aux classes J2SE. Vous devez avoir accès au chargeur de classe de contexte qui est destiné à l'application elle-même.