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

AWT/Swing Java Discussion :

Affichage images dans mon fichier .jar


Sujet :

AWT/Swing Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut Affichage images dans mon fichier .jar
    Salut à tous,
    je sais que ce type de discussion à déjà été créée, mais mon problème doit être spécifique. J'aimerais que mes images s'affichent quand je lance mon fichier jar.
    Voici comment je charge mes images :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Charge le fichier image
            try{
                // image est de type BufferedImage
                image = ImageIO.read(new File("./" + repertoireImages + "/" + nom + extensionImages));
            }catch (Exception e) {
                System.err.println("Le fichier " + nom + extensionImages + " n'a pas été " + "trouvé dans le répertoire " + repertoireImages);
            }
    Mon problème est que je n'arrive pas à gérer la ressource avec l'URL. Je sais que pour que mes images s'affichent dans mon .jar, il faut que je crée une URL avec le bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    URL chemin = getClass().getResource("./" + repertoireImages + "/" + nom + extensionImages);
    Et ensuite, je dois charger l'image avec l'URL mais un objet de type File ne peut pas charger un fichier avec une URL.

    J'espère être clair. Avez-vous des solutions ?
    Merci à tous

  2. #2
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Points : 40
    Points
    40
    Par défaut
    Bonsoir,
    deja y a de grande ambiguité qui entour la creation de fichier jar pour des projet java. ( Regarde la conf du manifest )
    Tu peux remedier a ce probleme en copiant ta photo sur le dossier system ( par exemple ) de windows et declarer son chemin complet sur tes sources avant de créer ton jar.
    ce code la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Charge le fichier image
            try{
                // image est de type BufferedImage
                image = ImageIO.read(new File("./" + repertoireImages + "/" + nom + extensionImages));
            }catch (Exception e) {
                System.err.println("Le fichier " + nom + extensionImages + " n'a pas été " + "trouvé dans le répertoire " + repertoireImages);
            }
    deviendra
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Charge le fichier image
            try{
                // image est de type BufferedImage
                image = ImageIO.read(new File("C:\\Windows\\system32\\/" + nom + extensionImages));
            }catch (Exception e) {
                System.err.println("Le fichier " + nom + extensionImages + " n'a pas été " + "trouvé dans le répertoire " + repertoireImages);
            }
    Comme ca lors de l execution, ton jar ira cherché c:\Windows\System32\<image>.jpg au lieu de chercher .\<image>.jpg !
    Je te deconseille d inclure des fichiers (a part les .class) dans ton jar , tu vas tjrs galeré !

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    Je te remercie pour ta réponse, l'ennui, c'est que si je passe mon point jar à quelqu'un pour qu'il teste mon application, en ayant indiqué le chemin C:/ ..., il n'aura pas les images.
    Je pense en effet qu'intégrer les images au projet sont une très bonne idée, comment dois-je procéder pour celà ? Juste les importer ? Et comment je les charge ensuite ?

    Merci encore pour ton aide.

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Quand tu utilises un jar et le getResource, le FileSystem change, c'est à dire que la racine de ton FileSystem est la racine de ton jar. Par exemple si tu as un fichier dans le package truc.machin.bidule le poath pour y accéder par getRessource sera (/truc/machin/bidule). Quand tu travailles à l'intérieur d'un jar il vaut mieux passer par des chemins absolus que relatifs d'ailleurs (tu es sur que le path ne changera pas et que tes ressources seront toujours présentes)

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    Merci pour ton explication Sinok.
    Peux-tu m'expliquer comment faire exactement pour passer par des chemins absolus ?
    Merci !

    P.S : Ce que je souhaite en fait, c'est de pouvoir passer mon fichier .jar à quelqu'un et seulement ce fichier pour qu'il puisse utiliser l'application sans soucis.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 74
    Points : 55
    Points
    55
    Par défaut
    Si ca peut t'aider, voici le code que j'utilise pour récuperer une image dans un jar:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ClassLoader myClassLoader = Thread.currentThread().getContextClassLoader();
    Toolkit tk = Toolkit.getDefaultToolkit();
    Image image = tk.getImage(myClassLoader.getResource(urlImage));
    avec bien sur: urlImage = adresse de ton fichier

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par womannosky Voir le message
    Merci pour ton explication Sinok.
    Peux-tu m'expliquer comment faire exactement pour passer par des chemins absolus ?
    Merci !

    P.S : Ce que je souhaite en fait, c'est de pouvoir passer mon fichier .jar à quelqu'un et seulement ce fichier pour qu'il puisse utiliser l'application sans soucis.
    Bah enlèves le . qui se trouve au début de tes paths.

    Un chemin absolu est de la forme (c'est une convention UNIX)

    /truc/machin/bidule/monImage.png où le premier / représente la racine puis le reste le chemin du fichier complet (cf mon post précédent) dans le référentiel du jar.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    Ce que tu me dis Sinok, c'est que si j'importe les images dans mon projet avec NetBeans (j'utilise NetBeans 6.1), je peux charger mes images comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Charge le fichier image
            try{
                // image est de type BufferedImage
                image = ImageIO.read(new File("/" + repertoireImages + "/" + nom + extensionImages));
            }catch (Exception e) {
                System.err.println("Le fichier " + nom + extensionImages + " n'a pas été " + "trouvé dans le répertoire " + repertoireImages);
            }
    Et c'est sensé marché ? Sans même utiliser de getResource() ?
    Mon problème, c'est que dans le cas que tu m'énonces, comment dois-je faire pour utiliser le getResource() pour que la racine soit la racine de mon jar ?

    C'est ça mon soucis en fait !

    Si tu as un exemple de code qui fait ceci pour charger une image (BufferedImage), je suis preneur
    Thanks.

  9. #9
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Imaginons que tu ai un jar avec une image ds un repertoire images
    Si ton jar est dans le classpath de l'appli, tu atteint son contenu en relatif comme ce ci (par exemple dans une servlet) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    InputStream defaultStream = null;
    byte[] image= null;
    defaultStream = this.getClass().getResourceAsStream("/images/noLogo.jpg");
    int fileLength = defaultStream .available();
    image= new byte[fileLength];
    defaultStream.read(image);

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    Je suis pas dans une Servlet, je fais une application de bureau J2SE. je dispose d'un repertoire images qui se trouvent dans mon projet NetBeans (mais qui n'est pas chargé sous NetBeans).
    Je charge mes images comme je l'ai déjà énoncé, et je souhaite qu'elles apparaissent quand j'exécute mon jar, c'est tout.
    Je pensais pas que c'était aussi compliqué comme demande (ou alors je comprends pas grand chose )
    Pouvez vous m'aider ?

  11. #11
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Si tu veux que celà marche partout, il faut:
    1- que les images soient dans un des packages de ton appli (prenons pour exemple resources.icons.medium comme package, en l'occurence tu as dedans une image test.gif). (et de ce fait les images sont contenues dans ton jar)
    2- L'image test.gif devra être chargée de la façon suivante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ImageIO.read(getClass().getResource(&quot;/resources/icons/medium/test.gif&quot;));
    Point barre, rien d'autre à faire.

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    C'est ce que j'attendais comme réponse, je te remercie.
    A+

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Points : 10
    Points
    10
    Par défaut
    Euh... si je peux me permettre j'ai une autre question à propos de ces posts...

    Comment ça se passe quand le programme crée un fichier...

    comment on fait à partir du jar pour le recupérer et surtout ou est ce qu'on le récupere...

    Me reste plus qu'à résoudre cette question, et hop j'ai fini mon appli!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Images dans le fichier '.jar'
    Par akbwalid dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 22/07/2011, 19h52
  2. Comment inclure ma BDD hsql dans mon fichier .jar ?
    Par sider dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/02/2011, 23h37
  3. affichage d'image dans un fichier
    Par sky88 dans le forum VB.NET
    Réponses: 2
    Dernier message: 20/10/2009, 17h06
  4. Affichage image dans Jar
    Par vegange dans le forum Débuter
    Réponses: 12
    Dernier message: 29/09/2009, 22h03
  5. Probleme d'utilisation d'images dans mon fichier css
    Par lazins dans le forum NetBeans
    Réponses: 4
    Dernier message: 02/10/2008, 21h30

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