Maison >Java >javaDidacticiel >Comment charger des fichiers de ressources à partir de la ligne de commande à l'aide de « getClass().getResource() » ?

Comment charger des fichiers de ressources à partir de la ligne de commande à l'aide de « getClass().getResource() » ?

DDD
DDDoriginal
2024-11-06 17:00:031050parcourir

How to Load Resource Files from the Command Line Using `getClass().getResource()`?

Chargement de fichiers à l'aide de getClass().getResource()

Lorsque vous travaillez avec des fichiers de ressources, comme les fichiers de propriétés, une approche courante consiste à utiliser getClass().getResource(path) pour les charger. Cependant, des différences surviennent lors de l'exécution de code à partir de la ligne de commande et dans un IDE comme Eclipse.

Comportement dans Eclipse

Dans Eclipse, getClass().getResource( path) charge efficacement les fichiers du dossier source. Si le fichier de ressources (par exemple, Test.properties) est placé dans le même package que le fichier Java, il est accessible dans Eclipse sans aucun problème.

Problème de déploiement en ligne de commande

Lors du déploiement de l'application en dehors d'Eclipse à l'aide de la ligne de commande, le fichier de ressources peut ne pas être présent dans le chemin de classe. Par conséquent, getClass().getResource(path) ne parviendra pas à charger le fichier, ce qui entraînera une exception de pointeur nul.

Solution

Pour résoudre ce problème, assurez-vous que le fichier de ressources est inclus dans le chemin de classe. Ceci peut être réalisé en plaçant le fichier dans le même répertoire que le fichier de classe compilé ou en le regroupant dans un fichier JAR.

Approche alternative

Au lieu d'utiliser getClass ().getResource(path), pensez à utiliser getClass().getResourceAsStream(path) pour créer un InputStream pour le fichier de ressources. Cette méthode évite d'avoir à convertir l'URI en fichier et gère le chargement de fichiers à partir de diverses sources, telles que le système de fichiers, un fichier JAR ou via un réseau.

Enfin, faites attention à l'argument transmis à la méthode getClass().getResourceAsStream. L'utilisation de Foo.class.getResourceAsStream("Test.properties") chargera le fichier à partir du même package que Foo, tandis que Foo.class.getResourceAsStream("/com/foo/bar/Test.properties") chargera le fichier à partir du paquet spécifié.

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