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

Tomcat et TomEE Java Discussion :

introspection - chargement de classes


Sujet :

Tomcat et TomEE Java

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Par défaut introspection - chargement de classes
    Bonjour!

    Je travaille sur une appli web avec Tomcat 5.5 et Eclipse 3.2.

    J'ai un problème qui me prend la tête depuis un petit moment, je vous l'explique :

    J'ai un projet avec l'arborescence suivante :
    -build
    -classes
    -fwk
    (meme arborescence ensuite que dans src)
    -src
    -fwk
    -core
    -GenericObject.java
    -util
    -PackageExplorer.java
    -metier
    -objets
    -MonObjet.java

    les classes du package "objets" heritent de la classe GenericObject

    Avec Ma classe "PackageExplorer" je parcours l'arborescence du package "metier", et pour chaque fichier se terminant par ".class", je charges l'objet Class correspondant à ce fichier par introspection.
    Pour cela, j'ai redéfini un ClassLoader qui effectue un "defineClass" à partir du ByteCode de chaque fichier .class trouvé.

    Ce mécanisme fonctionne, mais au moment ou le ClassLoader effectue le defineClass (pour une classe du package "objets"), il me sort l'exception suivante :

    "java.lang.NoClassDefFoundError: fwk/core/GenericObject"

    en fait il ne trouve pas la classe mère "GenericObject" qui se trouve plus haut dans l'arborescence. J'ai bien essayé de mettre la classe mère au même niveau que les classes filles, mais le résultat est le même.

    J'ai également tenté de relancer la recherche après avoir viré l'import de "GenericObject" dans les classes filles. Cette fois, bien qu'il y ait une erreur de compil dans les classes filles, le defineClass fonctionne.

    J'ai aussi testé mon "PackageExplorer" en le faisant tourner en local grâce a une classe de test. Dans ce cas de figure, il fonctionne sans problème.

    J'espère avoir été clair, si quelqun a une idée, qu'il n'hésite pas.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Par défaut
    Lorsque tu as instancié ton Classloader, as-tu bien passé en argument le Classloader de ta classe PackageExplorer, en tant que classloader parent ? Si non c'est tout à fait normal que tu aies cette erreur, car ton classloader, et les classes qu'il charge ne voient rien d'autre que le contenu de ton arborescence métier.

    Je ne suis pas très sûr de comprendre ce que tu fais au niveau du Classloader, mais j'ai l'impression que tu travailles à très bas niveau (ce qui n'est pas forcément une bonne idée si tu ne maitrise pas parfaitement les principes et le fonctionnement des classloaders). Pour ce type de fonctionnement, je préfère utiliser un URLClassloader en construisant correctement le classpath passé en paramètre du constructeur, et donc en ne me souciant pas de traitements bas niveau. Mais peut être as-tu des contraintes que tu n'as pas décrites car non liées à ton problème. Si tu veux avoir plus de détail sur l'utilisation de l'URLClassloader, fait une recherche sur le forum, j'ai répondu à plusieurs post à ce sujet


    Jacques Desmazières

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2009, 01h43
  2. Chargement de classe via dlopen
    Par Higestromm dans le forum C++
    Réponses: 4
    Dernier message: 18/05/2006, 16h14
  3. [Applet] Problème chargement de classe
    Par simsky dans le forum Applets
    Réponses: 1
    Dernier message: 08/05/2006, 19h31
  4. [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
  5. [Chargement de classe][noms de classe relatifs]
    Par freudy dans le forum Langage
    Réponses: 5
    Dernier message: 21/04/2004, 11h36

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