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][Debutante] Appel a une classe externe


Sujet :

Applets Java

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 10
    Points
    10
    Par défaut [applet][Debutante] Appel a une classe externe
    Bonjour a tous,

    j'ai encore quelques problèmes avec mon applet...
    Dans mon applet, je fais appel des à des classes qui ne sont pas de base dans la bibilotheque java. J'ai donc ajouté les .jar sur mon serveur et modifié mon classpath pour qu'il les prenne en compte.

    Ma compilation se passe bien. Je fais ensuite mon jar avec ma classe, et les jar externes qu'elle doit utiliser (on sait jamais), et je signe le tout. Mais quand je l'appelle dans mon browser, j'ai un vilain
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.noClassDefFoundException
    .

    Je suppose qu'il n'arrive pas a trouver l'une des classes externes que j'appelle mais je n'en suis pas sure, car la console java ne donne pas beaucoup d'indications.
    Quelqu'un peut il m'expliquer comment faire? D'avance merci.

    Skydoll

  2. #2
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Je crois que tu ne peux pas mettre de jar dans un jar dans le but de les utiliser comme librairies (juste pour les regrouper dans un même fichier).

    Essaies en laissant ces jar en dehors du jar final, et mets tous les jar dans le classpath.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    mes jar sont déjà dans le classpath, et cela a résolu mon problème de compilation.

    J'appelle donc juste mon .class et non plus mon .jar dans le code de ma page.

    J'ai maintenant l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     java.lang.NoClassDefFoundError: Affichage (wrong name: affichage/Affichage)
    Pour info, voici le code de mon applet :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    package affichage;
     
    import java.io.*;
    import java.util.*;
    import java.awt.*;
    import java.applet.*;
     
    import java.io.*;
    import java.util.*;
    import java.security.*;
    import java.security.cert.X509Certificate;
    import java.security.cert.CertStore;
    import java.security.cert.CertSelector;
    import java.security.cert.*;
    import javax.security.auth.x500.X500Principal;
     
    import se.assembla.jce.provider.ms.*;
     
    import java.util.Set;
     
    import java.net.*;
     
    import org.bouncycastle.jce.provider.BouncyCastleProvider;
    import org.bouncycastle.asn1.ASN1OctetString;
    import org.bouncycastle.asn1.ASN1InputStream;
    import org.bouncycastle.asn1.ASN1Sequence;
    import org.bouncycastle.asn1.ASN1TaggedObject;
    import org.bouncycastle.asn1.DERTaggedObject;
    import org.bouncycastle.asn1.DERObject;
     
    import org.bouncycastle.cms.CMSSignedData;
    import org.bouncycastle.cms.CMSProcessable;
    import org.bouncycastle.cms.CMSProcessableByteArray;
    import org.bouncycastle.cms.CMSSignedDataGenerator;
     
    import java.util.zip.*;
    import java.util.Enumeration;
     
    public class Affichage extends Applet{
     
    					/* cle privee utilisee pour signer */
    					PrivateKey privatekey;
    					/* certificat joint a la signature */
    					X509Certificate certperso;
    					/* Certificate store */
    					CertStore certstore;
    					CertSelector certselect;
     
    					/* certificate store pour la chaine de certification */
    					/* magasin de certificat "Autorite intermediaire" */
    					CertStore certstoreiac;
    					/* magasin de certificat "Autorite racine" */
    					CertStore certstoreac;
    					/* curseur sur les certificats "Autorite intermediaire" */
    					CertSelector certselectiac;
    					/* curseur sur les certificats "Autorite racine" */
    					CertSelector certselectac;
    					/* Liste des certificats de la chaine de certification. */
    					LinkedList ListCertification;
     
    					/* tableau des certificats X509 du certificate store */
    					X509Certificate[] certcollection;
    					/* tableau indiquant s'il existe ou non une clé privée */
    					Boolean[] arrayPrivateKey;
    					/* tableau indiquant si la CRL est definie ou non */
    					Boolean[] arrayCRL;
    					/* tableau indiquant si les certificats sont revoques ou non */
    					Boolean[] arrayRevoque;
    					/* tableau indiquant si les dates du certificat sont valides ou non */
    					Boolean[] arrayValid;
    					/* tableau des cles privees des certificats du certificate store */
    					PrivateKey[] privateKeycollec;
    					/* Certificate store et certificate factory. Utilises pour l'initialisation de la liste de revocation */
    					X509CRL listRevocation;
     
    					/* tableau contenant les noms des certificats. Pour affichage dans la fenetre */
    					String[] arrayNomCert;
    					/* nombre de certificats dans le magasin */
    					int nbCert;
     
    					/* definition de la chaine de Point d'entree des CRL, conformement a la norme RFC */ 
    					String CRL_OID="2.5.29.31";
     
    					static final int BUFFER = 2048;
     
    					/* fonction ouvrant les magasins de certificats et procédant aux premieres initialisations */
    					/* retourne 0 en cas de succes de l'ouverture d'un magasin non vide */
    					/*			1 en cas de succes de l'ouverture d'un magasin vide */
    					/*			1 en cas d'echec */
    					public int ouvrir_magasin_certificat(){
    						/* initialisation du Provider. Ici Assembla pour permettre l'ouverture du magasin WINDOWS */
    						Security.addProvider(new MSProvider());
    						try { 
    							/* ouverture des magasins de certificats */
    							open_cert_store_ms();
     
    							/* stockage du nombre de certificats dans le magasin */
    							certselect=new X509CertSelector();
    							Collection collect=certstore.getCertificates(certselect);
    							/* recuperation du nombre de certificats */
    							nbCert=collect.size();
    							/* s'il n'existe pas de certificats, retourner un code erreur */
    							if(nbCert == 0)
    								return 1;
     
    							return 0;
    						}
    						catch (Exception e){
    							return -1;
    						}
    					}
     
    					/* fonction d'ouverture des 3 magasins MS */
    					/* retourne 0 en cas de succes de l'ouverture des 3 magasins */
    					/* 			-1 en cas d'echec */
     
    					public int open_cert_store_ms(){
    						try{
    							/* instanciation du magasin de certificats a partir du magasin "PERSONNEL" microsoft*/
    							certstore=CertStore.getInstance("MY", null, "assembla");
     
    							/* instanciation du magasin de certificats a partir du magasin "Autorités intermédiaires" microsoft*/
    							certstoreiac=CertStore.getInstance("CA", null, "assembla");
     
    							/* instanciation du magasin de certificats a partir du magasin "Autorités " microsoft*/
    							certstoreac=CertStore.getInstance("ROOT", null, "assembla");
     
    							ListCertification=new LinkedList();
     
    							return 0;	
    						}
    						catch (Exception e){
    							return -1;
    						}
    					}
     
    					/* retourne le nombre de certificats */
    					public int getNbCertif(){
    						return nbCert;
    					}
     
     
    	public void init() {
    		ouvrir_magasin_certificat();
    	}
     
    	public void paint(Graphics g) {
            g.drawString(String.valueOf(getNbCertif()), 50, 25);
        }
     
    }
    Mon classpath est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /usr/java/java_home/jre/lib/rt.jar:/usr/java/java_home/jre/lib/ext/assembla_msks_jce.jar:/usr/java/java_home/jre/lib/ext/bcprov.jar:/usr/java/java_home/jre/lib/ext/bcmail.jar:./
    Et une fois compilé, je place mon .class dans le répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    APPLICATION/applet/affichage/
    L'appel de mon applet se fait dans une page HTML de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <applet code="Affichage.class" codebase="<%=adresseRacine%>/applet/affichage/"> </applet>
    Je sais qu'il ne faut plus utiliser le tag "applet", mais dans l'immédiat, pour les besoins de mes tests, ca suffira. Je modifierai mon appel quand mon applet fonctionnera.

    J'ai récupéré le code de mon applet d'une petite application indépendante que j'ai réalisé et dont le but est d'interroger la base de certificat du poste et de les lister... J'avais réalisé ce programme sous Eclipse, et il avait pour but de tourner en local sur des postes Windows. J'avais déjà eu des soucis du meme type à l'époque, que j'avais résolu en ajoutant un plug-in dans Eclipse qui me permettait de construire des .jar incluant mes .jar externes. Je pensais donc qu'il fallait que je fasse la même chose sous Unix, pour que les fonctions externes soient bien connues.
    [/code]

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Bon, je suis une buse!

    Mon problème : j'ai mal placé mon .class dans mon arbo.

    Désolée du dérangement.

    Je n'arrive toujours pas à accéder à mes bibliothèques externes, mais au moins, j'ai un mieux...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/07/2010, 14h13
  2. appel d'une classe externe
    Par peofofo dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 13/09/2008, 22h35
  3. Appeler une Applet ou servlet depuis une classe java
    Par oussam dans le forum Applets
    Réponses: 2
    Dernier message: 04/07/2006, 13h58
  4. [EJB][JONAS] EJB utilisant une classe "externe"
    Par Gregory3000 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 13/12/2004, 19h57
  5. [PL/SQL]Appel d'une classe/méthode java
    Par marsup54 dans le forum SQL
    Réponses: 4
    Dernier message: 30/06/2004, 16h44

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