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 :

API log4j avec l'applet ?


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 292
    Par défaut API log4j avec l'applet ?
    bonjour,
    j'ai une applet qui utilise l'API log4j ;
    si je lance mon applet depuis eclipse ça marche
    par contre dans navigateur c la cata !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    html>
    <body>
     
    <applet code="monPackage.monApplet" codebase="." archive=".\applet.jar,C:\Documents and Settings\$user\.m2\repository\log4j\log4j\1.2.9" width="200" heigth="200">
    </applet>
     
    </body>
    </html>
    la class applet est monApplet
    le jar qui contient l'applet est applet.jar dans le même dossier que le HTML
    l'API log4j est dans l'emplacement spécifié
    l'erreur console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    java.net.MalformedURLException: unknown protocol: c
    	at java.net.URL.<init>(Unknown Source)
    	at java.net.URL.<init>(Unknown Source)
    	at sun.plugin.util.GrayBoxPainter.setProgressFilter(Unknown Source)
    	at sun.plugin2.applet.Plugin2Manager.setupGrayBoxPainter(Unknown Source)
    	at sun.plugin2.applet.Plugin2Manager.access$500(Unknown Source)
    	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    exception : name.
    java.lang.IllegalArgumentException: name
    	at sun.plugin2.applet.Applet2ClassLoader.addJar(Unknown Source)
    	at sun.plugin2.applet.Applet2Manager.loadJarFiles(Unknown Source)
    	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Exception : java.lang.IllegalArgumentException: name
    merci de votre aide

  2. #2
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 41
    Par défaut
    D'après la documentation officielle :

    ARCHIVE = archiveList
    This OPTIONAL attribute describes one or more archives containing classes and other resources that will be "preloaded". The classes are loaded using an instance of an AppletClassLoader with the given CODEBASE.
    The archives in archiveList are separated by ",". NB: in JDK1.1, multiple APPLET tags with the same CODEBASE share the same instance of a ClassLoader. This is used by some client code to implement inter-applet communication. Future JDKs may provide other mechanisms for inter-applet communication. For security reasons, the applet's class loader can read only from the same codebase from which the applet was started. This means that archives in archiveList must be in the same directory as, or in a subdirectory of, the codebase. Entries in archiveList of the form ../a/b.jar will not work unless explicitly allowed for in the security policy file (except in the case of an http codebase, where archives in archiveList must be from the same host as the codebase, but can have ".."'s in their paths.)
    Mais d'un autre coté, pourquoi vouloir log4j dans une applet, ou serons placé les logs?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 292
    Par défaut
    merci pour le post
    j'ai mis log4j dans le même dossier que mon jar et html, et ça fonctionne
    un truc m'echape :
    mon applet est un driver d'impression,
    j'ai développé l'applet comme suite :
    - l'applet point d'entre, parametre d'impression, l'action imprimer
    - l'applet reçoit un fichier xml, à priori renvoyer par la servlet aprés la generation des données
    - l'applet fait appel à la classe de parsing du document, le retour c un objet contenant les données à imprimer
    - ensuite l'applet fait appel au la classe qui effectue l'impression, avec parametre l'objet qui à été generer par le parseur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    applet utilise une api log4j que je lé mis dans le même dossier
    la classe parseur utilise l'API jaxb
    enfin la classe qui effectue l'impression utilise l'API JavaComm pour la communication port série, et l'API JavaxPrint pour la communication avec le spooler windows
    l'impression à marché, malgré que g pas mis l'api du parsing ni l'api d'impression dans le dossier comme g fait avec log4g

    ET comment puis-je faire fonctionner mon applet avec une api externe
    merci
    NB: l'applet est signé

  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
    j'ai pas trop compris la fin de ton message, tu pourrais le corriger pour le rendre lisible? Pour mettre des librairies supplémentaires à disposition de ton applet, il suffit d'ajouter les jar concernés dans archive="......"

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 292
    Par défaut
    je t 'explique :
    mon applet est un est driver d'impression de billet !
    elle structuré comme suite :
    - package principale : fr.impression = classe Applet ==> init paramtre d'impressions et les classes (parsing, interfaces)
    -package utils : fr.impression.parseur = classes pour le parsing du fichier xml
    - package interfaces : fr.impression.interfaces = les interfaces utilisées
    - package modules : fr.impression.modules = les modules
    mon applet reçois un fichier xml qui contient les données à imprimer et les parametre d'impression;
    j'ai mis dans la 'applet un Logger(log4j) pour les logs, où j'ai importer l'api log4j
    dans la classe parsing j'ai importé l'api jaxb
    dans les modules j'ai importé l'api javacomm pour la communication port série,
    -------------------------------------------------------------------------
    jusque là c très clair
    bref, dans l'html, j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <applet code="fr.impression.AppletImpression" codebase="." archive=".\applet.jar,.\log4j-1.2.9.jar" width="200" heigth="200">
    </applet>
    et ça marché
    si mon applet est sur le net (et c le cas dans le futur), je vais mettre ça
    est ce que je suis obligé de mettre l'api log4j avec le jar de l'applet ? est comment ?
    est pourquoi j'avez pas besoin de spécifier les autres apis utilisés dans les autres classe ?
    merci

  6. #6
    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
    Citation Envoyé par rimas2009 Voir le message
    si mon applet est sur le net (et c le cas dans le futur), je vais mettre ça
    est ce que je suis obligé de mettre l'api log4j avec le jar de l'applet ?
    Oui, sinon les classes concernée seront introuvables
    est comment ?
    Exactement comme tu viens de le faire, via le parametre archive de ton tag html
    est pourquoi j'avez pas besoin de spécifier les autres apis utilisés dans les autres classe ?
    merci
    Parce que soit se sont des api faisant partie de la jvm, soit tu ne les a pas utilisées jusqu'à présent mais quand ce se produira -> boum exception.

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

Discussions similaires

  1. [Log4j] Configurer Log4j avec un fichier xml
    Par supermanu dans le forum Logging
    Réponses: 10
    Dernier message: 16/07/2007, 11h03
  2. Réponses: 3
    Dernier message: 16/09/2005, 10h01
  3. [Classloader]Probleme avec une applet
    Par punx120 dans le forum Applets
    Réponses: 3
    Dernier message: 04/06/2005, 18h43
  4. BCB6 & Mysql(api) :pb avec requete
    Par o_live dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/03/2005, 15h12
  5. Api mysql avec Devc++, erreur de compilation
    Par Viiince dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 15/06/2004, 17h19

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