9
votes

Accéder aux ressources de JAR

J'ai un fichier jar avec des ressources (principalement la configuration pour les caches, la journalisation, etc.) que je veux distribuer.

J'ai un problème avec les chemins relatifs pour ces ressources, J'ai donc fait ce que j'ai trouvé dans une autre question Stackoverflow, qui a dit que c'était un moyen valide: xxx

Malheureusement, cela ne fonctionne pas.

Des idées? Merci!

ps: évidemment je ne peux pas utiliser absolu chemins, et j'aimerais éviter Variables d'environnement si possible


3 commentaires

Le fichier de ressource est-il dans le même dossier que le fichier de classe? Est-ce une application autonome ou exécutée dans un serveur Web?


C'est dans le même dossier en effet. C'est un pot destiné à être inclus dans une application Web, oui (mais je pense que cela devrait être non pertinent)


Il est pertinent que les règles de recherche de ressources associées à une classe donnée sont mises en œuvre par le chargeur de classe définissant. Donc, votre chargeur de classe de votre application Web pourrait se comporter légèrement différemment sur la base de la mise en œuvre. Juste une pensée.


4 Réponses :


1
votes

Je dois toujours me casse à travers getresourceastream code> pour faire ce travail. Si "ressource.xml" est dans org / pablo / opus code>, je pense em> vous voulez ce que vous voulez:

Name.class.getResourceAsStream("org.pablo.opus.resource.xml");


0 commentaires

1
votes

où la ressource.xml a trouvé? Si dans la racine de l'arborescence source, essayez de le préfixer avec /.< p>


2 commentaires

Ce n'est pas sur la racine de l'arbre source. C'est dans un paquet


Donc, traitez le nom totalement qualifié comme un chemin absolu, par exemple com.me.and.u.effects.css.



1
votes

Je stocke habituellement des fichiers et d'autres ressources, puis récupérez-les sous forme d'URL: xxx

dans un contexte statique ou non: xxx

À partir d'une instance.

Les extraits ci-dessus supposent que la conception est un dossier de haut niveau dans le pot. En général, si le chemin commence par un "/", il suppose un chemin absolu, sinon il est relatif de l'emplacement de la classe.


0 commentaires

11
votes

Assurez-vous que votre dossier de ressources est répertorié sous forme de dossier source dans vos paramètres de projet. Assurez-vous également que le dossier de ressources est défini sur exporter lorsque vous créez votre bocal.

Vous pouvez ajouter une extension .zip à votre fichier JAR, puis ouvrez-la pour vous assurer que vos ressources sont incluses et à l'emplacement prévu. < / p>

J'utilise toujours des chemins absolus comme celui-ci: xxx

Lorsque vous utilisez des chemins absolus, "/" est le dossier racine dans le fichier JAR, pas la racine Dossier de la machine hôte.


1 commentaires

En effet, j'ai utilisé la méthode de chemin absolue (JAR) que vous avez décrite et cela a fonctionné! Je ne sais pas pourquoi il n'a pas fait le tour avec le relatif ... mais assez bon est assez bon