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

Développement Web en Java Discussion :

Erreur java.lang.NoClassDefFoundError en JEE


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Par défaut Erreur java.lang.NoClassDefFoundError en JEE
    Bonjour,
    Une fois de plus je reviens avec l'un de ces problèmes gonflant !

    mon application JEE marchait correctement jusqu’à ce que je la redéploie de nouveau. J’obtiens l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception while loading the app : java.lang.IllegalStateException:
     ContainerBase.addChild: start: org.apache.catalina.LifecycleException: 
    java.lang.RuntimeException: java.lang.NoClassDefFoundError: Lglp/dao
    /InterfaceDao;. Pour plus d’informations, consultez le fichier server.log.
    j'ai lu des articles sur les erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NoClassDefFoundError:
    mais je n'ai pas encore eu de solution à cee problème. La chose dont je suis cependant sure est que toute mes classes sont disponible dans le classpath mais le classloader pour une raison que j'espère avoir ici refuse de toutes les charger ! merci d'avance pour votre aide
    PS je travaile avec Glassfish V3 et JDk 7

  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
    Visiblement, il te manque

    Lglp/dao/InterfaceDao


    Cette classe se trouve ou?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Par défaut
    Je m'excuse pour mon absence prolongé, et te remercie pour l’intérêt porté à mon problème.
    En effet, l'interface se trouve bien là la JVM dit qu'elle n'est pas. J'ai déjà eu des problème identique plusieurs fois sous glassfish et j'ai du de façon radicale réinstaller glassfish pour résoudre le problème. aujourd'hui j'en ai marre et je veux vraiment comprendre pourquoi cela ce produit. pour quelle raison le classloader peut manquer une classe à l'exécution d'un programme et surtout comment charge t-il les classe sous glassfish car je me doute fort que c'est là la source de mes soucis

  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
    Citation Envoyé par mysianne Voir le message
    En effet, l'interface se trouve bien là
    Oui, mais où là? C'était la question

    comment charge t-il les classe sous glassfish car je me doute fort que c'est là la source de mes soucis
    Si c'est une application type webapp, les classes sont chargée depuis le WEB-INF/lib/*.jar et le WEB-INF/classes du war.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Par défaut
    Quand je dit là où la JVM dit qu'elle n'est pas; c'est-à-dire dans le package glp.dao Je le sais parceque j'ai ouvert l'arborescence de mon jar et la classe s'y trouvait bien!

    Mon application est de type JEE avec un module EJB et un modules WEB, c'est justement l'interface de mon EJB qui à un certains moment n'est pas chargé ou n'est pas visible par la JVM.
    les classes sont chargée depuis le WEB-INF/lib/*.jar et le WEB-INF/classes du war.
    Oui ça je le sais mais pourquoi certaine classe peuvent être chargé et pas d'autres alors qu'elles sont localisées au même endroit?

    J'ai envisager que puisque mon module web utilise l'EJB, peut-être à un certains moment une classe de mon module war essai d'utiliser l'interface de l'EJB alors qu'il n'est pas encore chargé par le classloader. Mais j'ai des doutes qui persistes puisque l'erreur survient au déploiement.
    Alors j'essaie de déployer le module EJB tout seul (.jar) et c'est pareil.
    java.lang.NoClassDefFoundError:
    et c'est là que je me perds !

  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
    il y a les règles de java pour le classloading, ensuite il y a les règles de j2EE (qui obligent une isolation entre tes wars, entre tes ear, qui permettent aux wars inclus dans un ear de voirs les ejbs, qui interdisent aux ejb de voir les war) et puis il y a les exceptions spécifiques au conteneur (glassfish) qu'on peux configurer dans ce cas si, si je ne me trompe pas, par des fichier manifest.mf.


    Donc ma question est:

    ta classe se trouve ou (physiquement, quel est le path du jar)
    et le code qui tente de l'utiliser se trouve ou (physiquement, la dernière classe dans la pile d'erreur se trouve où?)


    Ca permettrais déjà de voir si t'essaie de faire quelque chose d'interdit dans le specs.

    Aussi, si tu génère le ear dans netbeans, et que tu le déploie manuellement dans un glassfish qui tourne à part de netbeans, l'erreur est toujours là? Les IDE ont parfois tendance, pour permettre des déploiements rapide, à bidouiller un peux le classpath des conteneur j2EE, comme par exemple en leur demandant d'aller chercher directement les classes dans le répertoire de build de l'IDE, ce qui est un peu suspect selon moi

    Enfin, pour l'ordre de chargement des classes, ca n'existe pas. La jvm charge ses classes à la demande. T'as besoin de X, elle le charge. Quand elle charge X elle constate que X a besoin de Y elle le charge, etc.


    Vérifie aussi que tu ne duplique pas certains classes. Quand on joue avec des EJB on se retrouve vite, par mégarde, à avoir les ejb à la fois dans le EAR et dans le WAR, ce qui fous le bordel car le WAR vois des classes différentes de celles que vois le EAR du coup

Discussions similaires

  1. 2 erreurs java.lang.NoClassDefFoundError
    Par pruderic dans le forum Services Web
    Réponses: 2
    Dernier message: 23/10/2009, 16h23
  2. message erreur : java.lang.NoClassDefFoundError
    Par lord_british dans le forum Java ME
    Réponses: 2
    Dernier message: 03/04/2009, 08h06
  3. Erreur java lang.NoClassDefFoundError
    Par robinson50 dans le forum Exécution et industrialisation
    Réponses: 1
    Dernier message: 17/07/2008, 22h55
  4. Réponses: 13
    Dernier message: 31/01/2007, 23h22
  5. Réponses: 9
    Dernier message: 08/10/2006, 15h30

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