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 :

[jar] BufferedImage issue d'un .jpeg dans un jar


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut [jar] BufferedImage issue d'un .jpeg dans un jar
    Bonjour tout le monde !

    Voilà, j'ai un petit problème. Je dois passer une application en pluggin, c'est à dire adapter son implémentation par un système de fichier jar.

    Il semblerait que je ne puisse accéder à certains fichier ... selon la façon dont je m'y prend
    Le code suivant fonctionne sans problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ImageIcon imageIcon =new ImageIcon( getClass().getClassLoader().getResource(
    			"fr/path_to_file/file.jpg"));

    Mais le code suivant ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    InputStream in = 
    		ClassLoader.getSystemResourceAsStream(
    		"fr/path_to_file/file.jpg");
    System.out.println("*** jpeg 1 ***");
    JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in);
    System.out.println("*** jpeg 2 ***");
    BufferedImage image = decoder.decodeAsBufferedImage();
    Voici l'erreur obtenue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ***1***
    *** jpeg 1 ***
    Error : InputStream is null.
    Cannot open fr/gael/amalfi/localisation/images/geomap.jpg
    ***2***
    ***3***
    Or j'aimerai bien récupérer une BufferedImage ... je ne sais pas comment m'y prendre

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Est ce que les deux codes sont dans le meme package :

    Le path "fr/path_to_file/file.jpg" est interprete comme etant:

    path du package/fr/path_to_file/file.jpg

    Si une des classes est dans un package different le path recherche sera different.

    en utilisant "/fr/path_to_file/file.jpg", getResource ou getResourceAsStream cherche un fichier fr/path_to_file/file.jpg dans un des repertoires du classpath ou dans le meme path a l'interieur d'un jar du classpath ...

    Bulbo

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Salut bulbo ! Merci de ta réponse

    En fait oui, le fichier contenant le code est dans le même jar que celui l'image (et l'image et bien présente dans le jar)

    pour plus de détail, cela donne:

    fr / path_to_file / code.java
    fr / path_to_file / images / file.jpeg

    tout ceci étant dans le même fichier.jar

    Tit_henry

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Pour être plus précis, ma question peut être posée differement :

    Comment obtenir un objet BufferedImage à partir d'un fichier .jpg contenu dans un jar, le code permettant cette manip étant lui même dans le jar.

    -- juste pour pas faire comme Danny Briant et Elie Semoun qui comprennent pas les questions qu'on leur pose à Qui veut gqgner ... mais pas de pub --

  5. #5
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Ne pas melanger:

    package: espace de nom propre a java et representer par une arborescence de repertoire
    jar: fichier archive utiliser par java pour contenir des classes eventuellement organisee en package..

    Pour vulgariser:

    Si ton image est dans ton jar a l'emplacement fr/path_to_file/file.jpg

    Alors ton code est bon a part que tu dois changer le path que tu utilises pour etre /fr/path_to_file/file.jpg
    Le / du debut indique qu'il ne faut pas prendre en compte le nom du package lors de la recherche ...

    Bulbo

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Alors pour reprendre:

    C'est dans le même jar, mais pas dans le même package.
    C'est à dire que le code est dans un package "père" de celui où est l'image

    en gros j'ai : package.code.java et package.images.file.jpg

    Sinon, j'ai essayé le / devant le path...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    InputStream in = 
    				ClassLoader.getSystemResourceAsStream(
    					"/fr/gael/amalfi/localisation/images/geomap.jpg");
    ça n'a rien changé ...

    En tout cas merci de tes réponses

    Tit_henry

  7. #7
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Alors exemple simple:

    Tu as une image dans ton jar, dans le jar elle est dans le repertoire fr/toto/images (a partir de la racine du jar)

    Le jar est dans le CLASSPATH:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CLASSPATH: ..;..;..;C:\monRep\monJar.jar
    Alors pour lire le fichier de l'image bidule.jpg il me suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InputStream stream = getClass().getResourceAsStream("/fr/toto/images/bidule.jpg");
    Si ca ca ne marche pas c'est que le probleme est ailleurs ...

    Quel est l'environnement d'execution:
    Une applet ?
    Une application standard ?
    Une servlet ?

    Est-ce qu'un ClassLoader particulier est utilise pour loader les classes ...

    Bulbo :

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Merci bulbo, la solution était effectivement de mettre un / devant le tout

    Comprend toujours pas pourquoi ça a pas marché hier....

    Encore merci
    Tit_henry

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

Discussions similaires

  1. [JAR] comment executer un fichier inclus dans un JAR
    Par hedora dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 02/02/2011, 14h52
  2. Réponses: 1
    Dernier message: 08/10/2009, 16h38
  3. [JAR] Accéder à une resource contenue dans un jar
    Par Blo0d4x3 dans le forum Général Java
    Réponses: 4
    Dernier message: 17/02/2006, 08h29
  4. [JAR][DLL][path] inclure des DLLs dans un jar
    Par blaz dans le forum Général Java
    Réponses: 5
    Dernier message: 28/07/2005, 12h29
  5. [Jar][Classpath]Pb chargement resource classpath dans un jar
    Par Pill_S dans le forum Général Java
    Réponses: 20
    Dernier message: 01/10/2004, 20h12

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