Maison >Java >javaDidacticiel >Pourquoi getResourceAsStream renvoie-t-il Null lors du chargement de ressources à partir d'un JAR et comment puis-je y remédier ?

Pourquoi getResourceAsStream renvoie-t-il Null lors du chargement de ressources à partir d'un JAR et comment puis-je y remédier ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-20 07:59:10379parcourir

Why Does getResourceAsStream Return Null When Loading Resources from a JAR, and How Can I Fix It?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn