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

Entrée/Sortie Java Discussion :

Lire un fichier image a partir d'un .jar


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Lire un fichier image a partir d'un .jar
    Hello,
    J'essaye en vain d'afficher un fichier image a partir d'un .jar exécutable.

    Voici un extrait de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    URL imgURL1 = getClass().getResource("pics/zoom_in.png");
    System.out.println(imgURL1);
    Image imageBtn1 = new Image(display, imgURL1.getPath());
    Avec Eclipse ce la fonctionne parfaitement. le println affiche:"file:/C:/Users/morchea/workspace/archi_1/bin/pics/zoom_in.png"

    Lorsque j'exporte vers un .jar, et que j'execute sous Windows, voici l'output de la ligne de commande:

    C:\Users\morchea\Documents\Projets\archi>java -jar archi2.jar

    jar:file:/C:/Users/morchea/Documents/Projets/archi/archi2.jar!/pics/zoom_in.png

    Exception in thread "main" org.eclipse.swt.SWTException: i/o error (java.io.FileNotFoundException: file:\C:\Users\morchea\Documents\Projets\archi\archi2.jar!\pics\zoom_in.png (The filename, directory name, or volume label syntax is incorrect))
    at org.eclipse.swt.SWT.error(Unknown Source)
    at org.eclipse.swt.SWT.error(Unknown Source)
    at org.eclipse.swt.graphics.ImageLoader.load(Unknown Source)
    at org.eclipse.swt.graphics.ImageDataLoader.load(Unknown Source)
    at org.eclipse.swt.graphics.ImageData.<init>(Unknown Source)
    at org.eclipse.swt.graphics.Image.<init>(Unknown Source)
    at ArchiOpen4ipView.<init>(ArchiOpen4ipView.java:54)
    at ArchiOpen4ip.main(ArchiOpen4ip.java:4)
    Caused by: java.io.FileNotFoundException: file:\C:\Users\morchea\Documents\Projets\archi\archi2.jar!\pics\zoom_in.png (The filename, directory name, or volume label syntax is incorrect)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at org.eclipse.swt.internal.Compatibility.newFileInputStream(Unknown Source)
    ... 6 more



    Ce qui m'inquiete et que je ne comprends pas est le path affiche par le println, il contient "archi2.jar!/..." Ce ! est-il normal?

    Si qqun a une idee, d'avance merci.
    Morchea.

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    question toute bête: en créant ton jar avec Eclipse, lui as-tu bien demandé de copier tous les fichiers du projet et pas seulement les .class?
    En d'autres termes, si tu ouvres ton .jar avec un décompresseur (winrar, winzip etc.), voit tu dedans ton dossier pics et ton fichier zoom_in.png?
    Par ailleurs, as-tu essayé ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Image imageBtn1 = new Image(display, "pics/zoom_in.png");
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par Jidefix Voir le message
    Bonjour,

    Par ailleurs, as-tu essayé ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Image imageBtn1 = new Image(display, "pics/zoom_in.png");
    Je doute que ça ne marche puisqu'il dit qu'il essaie d'executer le jar crée, donc je suppose qu'il n'y a de dossier pics dans le meme repertoire que je jar.

    Mais comme tu l'as dit, le mieux est de verifier si le fichier existe bien dans le jar en le decompressant avec winrar par exemple.

  4. #4
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Ben en même temps l'erreur vient du fait que le path récupéré est le résultat d'un getResource, qui n'est pas syntaxiquement correct pour un accès filesystem, donc si ça se trouve les images sont bien la mais il ne les récupère pas de la bonne façon...
    De plus je ne sais pas quelle est cette classe Image, dans l'API awt j'ai juste trouvé un constructeur sans argument...
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  5. #5
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    java.io.FileNotFoundException: file:\C:\Users\morchea\Documents\Projets\archi\archi2.jar!\pics\zoom_in.png (The filename, directory name, or volume label syntax is incorrect)
    l'erreur generée est un fileNotFound, ce qui veut dire que le fichier n'existe pas.

    As tu verifié si il n'y as pas de majuscule dans le nom de ton fichier?

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Hello,
    mon .jar contient tous les fichiers. Si je le decompresse (winrar), j'obtient:

    archi2.jar ->

    archi2 contient mes classes
    archi2/META-INF
    archi2/org contient des librairies eclipse SWT
    archi2/pics contients mes pics

    D'ailleurs, en ecrivant ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image imageBtn1 = new Image(display, "C:/Users/morchea/Documents/Projets/archi/archi2/pics/zoom_in.png");
    ,cela marche.
    Mais je ne comprends pas:
    -quel est le format correct du path pour acceder a un fichier a l'interieur de l'archive .jar ? Vu que je n'aurais normalement que le .jar, et pas son contenu desarchive.
    -file:\C:\Users\morchea\Documents\Projets\archi\archi2.jar!\pics\zoom_in.png semble etre le probleme et ne pas avoir un bon format.

    Morchea

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    La classe de l'image est org.eclipse.swt.graphics.Image
    Et non, il n'y a pas de majuscules dans mes noms de fichiers.

    Merci, Morchea

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut resolu!
    Apres pas mal de recherche, voici la solution qui fonctionne pour moi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Image imageBtn1 = null;
    try {
       imageBtn1 = new Image(display, MainClass.class.getResourceAsStream("pics/zoom_in.png"));    
    } 
    catch (Exception e1) {
              e1.printStackTrace();
    }
    Il semble que le getResourceAsStream etait necessaire au lieu du GetResource.
    Si quelqu'un sait m'expliquer pourquoi, ce serait cool.
    Merci pour vos commentaires en tout cas.

    Morchea.

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

Discussions similaires

  1. Lire un fichier PDF a partir de Delphi
    Par souminet dans le forum Débuter
    Réponses: 1
    Dernier message: 14/06/2008, 09h43
  2. afficher une fichier image a partir de MYSQL database
    Par ilyazi dans le forum Débuter
    Réponses: 2
    Dernier message: 19/04/2008, 09h08
  3. [PDA] Lire un fichier du PDA à partir d'un PC
    Par air75 dans le forum Développement Mobile en Java
    Réponses: 2
    Dernier message: 23/11/2007, 09h18
  4. Réponses: 1
    Dernier message: 17/01/2006, 07h42
  5. Comment lire un fichier image
    Par Charlemagne dans le forum DirectX
    Réponses: 9
    Dernier message: 12/03/2004, 00h22

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