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

Langage Java Discussion :

Une ressource présente dans le jar n'est pas trouvée


Sujet :

Langage Java

  1. #1
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 363
    Points
    1 363
    Par défaut Une ressource présente dans le jar n'est pas trouvée
    J'espérais trouver la solution à mon problème dans cette FAQ ou dans ce thread-ci !! Déception. Car c'est le même problème.

    Dans mon répertoire class j'ai un répertoire AA avec des icônes, et un répertoire Zweeger avec mes packages Zweeger.x.y....

    Pour charger mes icônes, je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    URL url = ATVSTECentral.class.getResource("/AA/");
    Quand j'exécute via mon EDI ça fonctionne, car le répertoire est bien présent.

    Quand je fabrique mes jar en y incorporant le répertoire AA, le getRessource ne trouve rien. Comme ça se fait ?

    Voici comment je fabrique mon jar:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "jar.exe" -cmf0 ../../Make/ZWEEGERCORE.MF zweegercore.jar Zweeger/Common/*.* Zweeger/Zweegui/*.* AA/*.*
    "jar.exe" -cmf0 ../../Make/ZWEEGER.MF zweeger.jar Zweeger/Applications/Zweeger/Common/*.* 
    "jar.exe" -cmf0 ../../Make/ZWEEGEREXE.MF zweegerexe.jar Zweeger/Applications/Zweeger/Standalone/*.*
    l'exécutable étant le 3ème (zweegerexe.jar) et n'étant pas celui qui contient le répertoire AA.

    Pour info, voici le manifest du jar contenant les icônes (si cela avait une influence):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Manifest-Version: 1.0
    Created-By: 1.4.2_04 (Sun Microsystems Inc.)
    Name: Zweeger/Common/
    Sealed: true
     
    Name: Zweeger/Zweegui/
    Sealed: true
    Voyez-vous une explication à ceci ?
    Merci,

    Laurent

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Je pense que c'est parce que la notion de répertoire n'existe tout simplement pas dans les zip, donc dans les jar, ou qu'elle existe sous une forme dégradée.

    Tu pourras vérifier en faisant jar tf tonjar ; selon mes petites théories, il n'y aura pas de /AA/.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 363
    Points
    1 363
    Par défaut
    En effet. Merci pour cette piste.

    J'ai donc ajouté explicitement "AA/" en plus de "AA/*.*". Un jar jt l'affiche bien maintenant.

    Un getClass().getResource("/AA/") retourne bien une URL, mais si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dir=new File(URL.toURI());
    ça plante avec une IllegalArgumentException("URI is not hierarchical");

    Je viens d'essayer plusieurs combinaison ("/AA", "/AA/icon.png", ...), j'obtiens chaque fois une URL et un URI, mais l'URI est "opaque" (c'est que signifie l'exception retournée par le new File(...)) et une URI opaque est une URI dont le path vaut null.

    L'uri trouvée est:
    "jar:/file:/D:/work/zweeger.jar!/AA/icon.png" ce qui est correct.

    Pourquoi est-ce que l'API URI ne trouve pas de "path" là-dedans ?

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Salut,
    La notion de file ne marhce plus dans un jar (qui est un fichier lui même).
    Il faut toujours passer par class.getResourceAsStream pour accéder à un fichier dans un jar.

  5. #5
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 363
    Points
    1 363
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    La notion de file ne marhce plus dans un jar (qui est un fichier lui même).
    Il faut toujours passer par class.getResourceAsStream pour accéder à un fichier dans un jar.
    AaahJe ne voulais pas tant lire le contenu que traiter l'objet comme un fichier/répertoire: faire un listFiles(), ...

    Est-ce qu'il y a un autre moyen de dresser une liste de ce que contiendrait le jar ?

  6. #6
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut .
    Oui : analyser par les méthodes de zip son contenu, mais c'est pas très bô

    En effet, tes icones pourraient être autre part que dans un jar.

    Perso en ce genre de cas (que j'évite) je fais un fichier qui contient la liste des ressources ; j'accède ensuite à ce fichier comme une ressource, etc.

    Une autre solution consiste à considérer l'ensemble des icones comme une seule ressource, que tu zipes ; tu places ce zip dans un jar, ou ailleurs, obtenant ainsi une ressource zipée ; comme tu es sûr qu'elle est zipée, il devient légitime de faire la liste de son contenu. Cela fonctionne même si ta ressource est dans un répertoire puisque de toutes façons elle est zippée.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  7. #7
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 363
    Points
    1 363
    Par défaut
    Oui : analyser par les méthodes de zip son contenu, mais c'est pas très bô
    En effet.
    J'aime bien ta 2ème proposition. Je vais aller dans cette direction.
    Merci.
    Laurent

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

Discussions similaires

  1. [Débutant] Récupérer une image présente dans les ressources du projet?
    Par garheb dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/05/2012, 15h05
  2. Accéder a une ressource incluse dans un .jar
    Par megaloplex dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 21/11/2011, 17h44
  3. Réponses: 3
    Dernier message: 24/11/2006, 11h12
  4. Réponses: 6
    Dernier message: 29/07/2005, 11h12
  5. [JAR] instancier une Image contenue dans un jar
    Par celine31 dans le forum Général Java
    Réponses: 3
    Dernier message: 03/04/2005, 15h55

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