Résolution de « getResourceAsStream renvoie Null » pour le chargement de ressources à partir d'un JAR
Lors de la tentative de chargement d'un fichier texte à partir d'un package dans un JAR compilé, la méthode getResourceAsStream peut renvoyer null, laissant les développeurs perplexes. Cet article approfondit le problème et propose une solution.
Les premières tentatives de chargement du fichier à l'aide de Class::getResourceAsStream et de divers arguments ont toutes abouti à l'impression de null. Ce comportement inattendu est dû au fait que le chargeur de classe système, utilisé par la méthode Class::getResourceAsStream(...), ne reconnaît pas les JAR et ne peut donc pas accéder aux ressources contenues dans le fichier JAR.
Pour résoudre ce problème, il est nécessaire d'utiliser le chargeur de classe approprié ayant accès aux ressources du JAR. En Java, chaque classe est chargée par un chargeur de classe, et le chargeur de classe qui a chargé la classe Lifepaths aura accès aux ressources du JAR. Par conséquent, la bonne façon de charger le fichier est d'utiliser directement la méthode Class::getResourceAsStream(), comme indiqué ci-dessous :
public static InputStream loadResource() { return Lifepaths.class.getResourceAsStream("/initialization/Lifepaths.txt"); }
Notez que lors de l'appel de getResourceAsStream(name), le nom doit commencer par "/ ". Cela garantit que la ressource est chargée à partir de la racine du chemin de classe et est essentiel pour que le chargeur de classe localise correctement le fichier.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!