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

Java Discussion :

problème de chargement de classe (plugin)


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2003
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2003
    Messages : 205
    Par défaut problème de chargement de classe (plugin)
    Bonjour,

    J'ai un problème de chargement de classe (qui sont en faite des plugin).

    Dans un fichier plugin.txt, j'ai a chaque ligne le nom d'une classe (dc d'un plugin).

    Si je met la classe directement avec les autres fichiers de mon application je n'ai pas de problème mais si je met cette classe dans un dossier plugin/"nom de la classe"/"nom de la classe".class il me met l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.lang.ClassNotFoundException: plugin/PluginWeb/PluginWeb
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Unknown Source)
    J'aimerai en faite que chaque plugin soit dans un dossier portant son nom.

    Voici le code:
    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
    Class c = null;
    File source = new File("plugin.txt");
    File source = new File("plugin.txt");
    		
    try {
      InputStreamReader systemReader = new InputStreamReader(new FileInputStream(source));
      LineNumberReader reader = new LineNumberReader(systemReader);
      String line;
      while((line = reader.readLine())!=null) {
        NomPlugins.add("plugin/"+line+"/"+line);
        //NomPlugins.add(line);
        System.out.println(line+"|"+NomPlugins.size());
      }
    } catch( java.io.FileNotFoundException f ) {
    } catch( java.io.IOException e ) {
    }
       
    Iterator iterateur = NomPlugins.iterator();
    while(iterateur.hasNext()){
      String NomClass = (String) iterateur.next();
      try {
        System.out.println(NomClass);
        c = Class.forName(NomClass); 
        System.out.println(c);
      } 
      catch(ClassNotFoundException e) {   
        System.err.println("Classe "+NomClass+" non trouvée");  
        e.printStackTrace();
      }           
      try {   
        Object o = c.newInstance();      
        Plugins p = (Plugins) o;
        InstancePlugins.add(p);
      } 
      catch(InstantiationException e) {
      }    
      catch(IllegalAccessException e) {
      }  
    }
    Savez vous comment faire?

    Merci d'avance

    Nicodess

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Ca dépend plus où moins de la manière avec laquelle ton appli et tes plugins sont distribués. Mais dans tous les cas, c'est une question de chemin d'accès.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2003
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2003
    Messages : 205
    Par défaut
    J'ai mis sur le poste initial des partie de code en gras qui me parraissent les points ou il peut y avoir des problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NomPlugins.add("plugin/"+line+"/"+line);
    //NomPlugins.add(line);
    j'ai essayé bien sur avec "./plugin/"+line+"/"+line et "/plugin/"+line+"/"+line mais ca ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c = Class.forName(NomClass);
    c'est ici qu'est générer l'erreur.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Donc ta méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NomPlugins.add("plugin/"+line+"/"+line);
    ajoute le chemin d'accès au répertoire plugin pour écrire un chemin absolu, ou bien ce répertoire se trouve sous la racine de ton application et tu utilises un chemin relatif, c'est bien ça ?

    hummm

    As-tu essayé d'afficher ce que tu récupères avec l'itérateur.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2003
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2003
    Messages : 205
    Par défaut
    En fait, comme en ne mettant rien (sauf line qui contient juste le nom de la classe) il me charge bien mon plugin, je me suis dit que en mettant le chemin du dossier et le nom de la classe (cad "plugin/"+line+"/"+line) il allé bien me charger ma classe mais je pense que c = Class.forName(NomClass); ne veut que le nom d'une classe et ne veut pas de chemin en lus pour aceder a cette classe. Si c'est le cas, je ne sais pas comment lui dire que c'est dans un autre dossier.

    Nicodess

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Ce qui est bizarre dans ta construction, c'est ta classe NomPlugin. Je veux dire, quand tu appelles la méthode statique NomPlugin.add(line), à quoi est ajouté line ? J'ai du mal à y voir clair.

Discussions similaires

  1. Problème de chargement de classe
    Par Schnuffel dans le forum Général Java
    Réponses: 2
    Dernier message: 27/06/2011, 15h54
  2. Problème de chargement de class
    Par benthebest dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 06/10/2010, 17h16
  3. [JMS/JNDI] Problème de chargement de classe
    Par Erouan dans le forum Glassfish et Payara
    Réponses: 5
    Dernier message: 03/02/2010, 16h12
  4. [Applet] Problème chargement de classe
    Par simsky dans le forum Applets
    Réponses: 1
    Dernier message: 08/05/2006, 19h31
  5. [SunOne] Problème de chargement de classe Xerces sous SunOne
    Par cocula dans le forum Glassfish et Payara
    Réponses: 3
    Dernier message: 11/01/2006, 15h46

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