Java Language Charger une ressource depuis le classpath


Exemple

Il peut être utile de charger une ressource (image, fichier texte, propriétés, KeyStore, ...) qui est incluse dans un JAR. Pour cela, nous pouvons utiliser les Class et ClassLoader .

Supposons que nous ayons la structure de projet suivante:

program.jar
|
\-com
  \-project
    |
    |-file.txt
    \-Test.class  

Et nous voulons accéder au contenu de file.txt de la classe Test . Nous pouvons le faire en demandant au classloader:

InputStream is = Test.class.getClassLoader().getResourceAsStream("com/project/file.txt");

En utilisant le classloader, nous devons spécifier le chemin complet de notre ressource (chaque paquet).

Ou alternativement, nous pouvons demander l'objet de classe de test directement

InputStream is = Test.class.getResourceAsStream("file.txt");

En utilisant l'objet class, le chemin est relatif à la classe elle-même. Notre Test.class étant dans le package com.project , identique à file.txt , nous n'avons pas besoin de spécifier de chemin du tout.

Nous pouvons cependant utiliser des chemins absolus à partir de l'objet de classe, comme ceci:

 is = Test.class.getResourceAsStream("/com/project/file.txt");