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

Applets Java Discussion :

applet avec librairies intégrées


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut applet avec librairies intégrées
    Bonjour à tous,

    J'ai développé une applet contenant plusieurs librairies au format .jar dont jai_imageio.jar et dcm4che-imageio-2.0.9.jar

    Mon soucis est que ces 2 jar contiennent les mêmes fichiers dans leurs répertoires META-INF/services.

    Du coup lors du passage dans la partie jarsigner de mon script ant je reçois une erreur de type duplicate file ...

    Après quelques recherches sur le net j'ai compris que ce repertoire META-INF/services permettait de référencer des sortes de plugins.

    J'ai donc décompressé le jar dcm4che, retiré le repertoire META-INF/services et j'ai concaténé ces lignes dans le fichier identique contenu dans jai-imageio.

    Je me suis dis comme ca il n'y aura qu'un seul fichier META-INF/services/javax.imageio.spi.ImageReaderSpi déclarant tous les services.

    Du coup le jar est bien généré et signé. Malheureusement lorsque je le mets sur le serveur, il y a une erreur pendant l'exécution de type NoClassDefFoundError.

    Or la classe en question vous l'aurez deviné existe bien dans le jar :p

    Et chose plus énervante ca fonctionne très bien sous netbeans mais pas sur le serveur.

    Donc voila je cherche des explications déjà sur les services SPI, les META-INF, et comment solutionner mon probleme

    Bien entendu cela fait 2 jours que je parcours le web a la recherche de solutions mais en vains. Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pourquoi veux-tu fusionner les jar? Tu peux simplement garder tes deux jar séparés, les signer et référencer les deux jar dans le tag dans ton html.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ben j'ai intégré ces 2 jars en tant que librairie donc à la construction de mon applet ils sont ajoutés dans mon jar...

    C'est vrai qu'il y a aussi la solution de laisser les jars à part et de laisser la jvm récupérer les jars necessaire sur le serveur en les déclarant dans le classpath mais je ne sais pas comment faire non plus. Je vais m'orienter sur cette solution si je n'arrive pas à résoudre mon problème.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    l'intégration de plusieurs jar se fait normalement avec ce genre de tag, c'est la méthode la plus simple et aussi la méthode recommandée. Créer un jar qui fusionne plusieurs jars, comme tu l'a constaté, ca amène vite des problèmes, surtout quand la notion de services est utilisée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <APPLET
            CODEBASE = "http://monserveur/monAppletBase"
            ARCHIVE = "librairie1.jar; librairie2.jar; monApplet.jar"
            CODE = "monPackage.MonApplet.class"
            WIDTH = "500"  HEIGHT = "200"   >

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci, je vais tester ca de suite ..... après le café :p

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bon alors, j'ai commencé par sortir uniquement la classe qui me pose probleme.

    J'ai donc modifier l'appel html de mon applet en ajoutant lib1.jar dans "ARCHIVE=".

    Mais l'applet ne trouve pas les classes de cette librairie. Faut-il la déclarer également dans le jar de l'applet ?

    je continue de chercher

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    l'intégration de plusieurs jar se fait normalement avec ce genre de tag, c'est la méthode la plus simple et aussi la méthode recommandée. Créer un jar qui fusionne plusieurs jars, comme tu l'a constaté, ca amène vite des problèmes, surtout quand la notion de services est utilisée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <APPLET
            CODEBASE = "http://monserveur/monAppletBase"
            ARCHIVE = "librairie1.jar; librairie2.jar; monApplet.jar"
            CODE = "monPackage.MonApplet.class"
            WIDTH = "500"  HEIGHT = "200"   >
    Déjà j'ai compris pourquoi mes librairies ne se téléchargeaient pas. c'est des "," et pas de s";" pour la balise "ARCHIVE" :

    ARCHIVE = "librairie1.jar, librairie2.jar, monApplet.jar"

    Du coup mes fichiers sont en cache mais mon jar ne les trouve toujours pas j'ai donc rajouté ma ligne dans mon script ant pour ajouter le Class-Path.

    Et la tout est bon sauf que mon applet n'a plus la permission d'accéder au disque dur alors qu'elle est signée...

    Ben tampis je signe toutes les librairies et c'est bon !

    ou pas...

    Après avoir signé mes librairies je me retrouve avec un java.lang.ClassNotFoundException au chargement de l'applet .....

    retour à la case départ ^^

    j'ai du faire une fausse manip quelque part je retente demain.

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    disons que théoriquement, il faut pas tout signer. En pratique les cas ou ca marche sans tout signer sont tellement limite qu'on signe tout

    Désolé pour le ; je dois avoir mal lu quelque part

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

Discussions similaires

  1. Problème applet avec HTML intégré
    Par NewBie_of_rostand dans le forum JBuilder
    Réponses: 4
    Dernier message: 15/03/2006, 11h48
  2. Problème avec librairie iostream.h
    Par Rafoo dans le forum MFC
    Réponses: 3
    Dernier message: 22/07/2005, 13h20
  3. Architecture multi couches avec librairie borland?
    Par seb_asm dans le forum JBuilder
    Réponses: 4
    Dernier message: 08/06/2005, 10h14
  4. Applet avec NetBeans
    Par Kevgeii dans le forum NetBeans
    Réponses: 7
    Dernier message: 29/03/2004, 11h30
  5. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43

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