
Envoyé par
Clorish
getRessource ? ClassPath ?
Peut tu detailler un peu ?
Le ClassPath correspond à une arborescence virtuelle où sont recherché les classes et les ressources. La méthode getResource() permet de trouver rapidement un fichier dans le classpath, sans se soucier de son emplacement exact.

Envoyé par
Clorish
par cotnre j'aimerais eviter d'avori a "configurer" l'applciation avec l'ajout de chemins dans le classpath du system ou tout autre bidouilles du genre.
Je suis d'accord avoir toi, mais les valeurs par défaut suffisent justement !
Par défaut le classpath comporte les classes de l'API standard et ton jar principal 
Grosso-modo pour MyClass une classe de ton jar, tu peux faire :
URL url = MyClass.class.getResource("name.txt");
pour récupérer le fichier name.txt présent dans le même package que ta classe.
ou bien :
URL url = MyClass.class.getResource("/chemin/package/name.txt");
Pour récupérer le fichier en spécifiant son chemin complet dans le jar.
La seule différence étant que tu manipules des URL que tu lis avec la méthode openStream(), mais c'est bien plus puissant car tes fichiers pourraient être n'importe où (dans un répertoire, une archive zip/jar, un fichier distant...).

Envoyé par
Clorish
sosu delphi j'aimais bien recuperer le repertoire d'execution de l'application (extraction du repertoire a partir du chemin complet de l'executable). Cela me permettais de rendre mes chemins dynamique sans rien toucher au systeme.
Le problème avec Java c'est que cela ne fonctionnera pas forcément : une application Java peut être déployé de diverse manière et pas forcément dans un vrai répertoire.
En utilisant un code comme ceci :
URL url = MyClass.class.getResource("MyClass.class");
Et en analysant le chemin retourné tu peux déterminer l'emplacement du jar, mais le code ne fonctionne que si tu est dans un jar...
Maintenant si c'est un simple fichier de config il est préférable d'utiliser le user.home, cela permet d'avoir une application multi-utilisateur.
a++
Partager