IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Recuperer le repertoire du fichier jar executé


Sujet :

Java

  1. #1
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut Recuperer le repertoire du fichier jar executé
    Hello,

    Je cherche a recuperer le chemin d'acces du fichier jar qui contient mon application lors de l'execution de cette derniere ...

    Ou alors tout autre moyen d'etre "sur" de recuperer le bon repertoire ...

    Ou encore mieux : peut on lire (a priori oui) mais surtout ecrire (???) dans un fichier qui est contenu DANS le jar ?!?

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Clorish Voir le message
    Je cherche a recuperer le chemin d'acces du fichier jar qui contient mon application lors de l'execution de cette derniere ...
    Il y a un moyen en utilisant getResource() et le classpath. Il me semble qu'il y a un code qui traine sur le forum...

    Citation Envoyé par Clorish Voir le message
    Ou encore mieux : peut on lire (a priori oui) mais surtout ecrire (???) dans un fichier qui est contenu DANS le jar ?!?
    En ce qui concerne la lecture : OUI tout simplement un utilisant getResource().

    Pour l'écriture la réponse est un petit "non". Il est possible de modifier un jar comme n'importe quel archive ZIP, mais il n'y a rien de tout fait et surtout la modification du jar principale n'est pas portable (sauf erreur cela ne fonctionne pas sous Windows)


    Pourquoi as-tu besoin de modifier un fichier à l'intérieur du jar ?

    a++

  3. #3
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    getRessource ? ClassPath ?
    Peut tu detailler un peu ?

    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.

    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.

    Sinon je m'etais dit que dans le JAR j'aurais plus de facilités a chopper un nom de fichier qu'en dehors du jar

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Clorish Voir le message
    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.

    Citation Envoyé par Clorish Voir le message
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...).



    Citation Envoyé par Clorish Voir le message
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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++

  5. #5
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Mouais .... je vais regarder ca a tete reposée.
    comem d'hab, java ne fait rien dans le simple

    Je crois que c'est pour ca qu'a une epoque j'aimais pas ca :p

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Ca doit etre possible en utilisant le code disponible dans la Comment trouver le répertoire contenant le jar où est ma classe ?

    Sinon en fouillant bien on peut trouver des trucs similaires : http://www.developpez.net/forums/sho...d.php?t=158610
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Merci pour ce complement d'info

    C'est domage qu'il faille se palucher ca a la mimine
    Mais bon ... ca ne fera qu'une fonction de plus dans la toolBox

  8. #8
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Petite question : A quoi ser "URLDecode" dans l'exemple de la faq ? car URL.toString renvoie la meme chose ....


  9. #9
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ca doit surement gérer les caractères spéciaux qui peuvent être encodé dans une URL...

    a++

  10. #10
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    ok donc pour les filenames je peux m'en passer

Discussions similaires

  1. Manipulation de fichier JAR Executable
    Par t.n.b.g dans le forum Langage
    Réponses: 6
    Dernier message: 09/03/2008, 08h59
  2. Fichier JAR Executable
    Par t.n.b.g dans le forum Eclipse Java
    Réponses: 14
    Dernier message: 05/03/2008, 23h10
  3. creations d'un fichier jar executable
    Par cerco1 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 24/08/2007, 10h35
  4. Réponses: 5
    Dernier message: 30/04/2007, 18h03
  5. Réponses: 9
    Dernier message: 27/10/2005, 22h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo