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

Servlets/JSP Java Discussion :

Erreur NoClassDef FoundError


Sujet :

Servlets/JSP Java

  1. #1
    Membre éclairé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut Erreur NoClassDef FoundError
    Bonjour, je bute actuellement sur une erreur noClassDefFoundError

    J'ai un project utilisaant hibernate et contenant mes pojo et dao qui est inclue dans le project principal via le buildpath.

    Le project principal est un project web implementant mvc2( donc un servlet et plusieurs classes contrôleur.

    Dans ma classe UserController j'ai le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    private IUserDao userDao;
     
    public UserController() {
          userDao = new UserDao();
    }
     
    Public Map<String,Object> Auth ( String login , String password) {
           User user = userDao.auth(login, password);
           /* reste du code */
    }
    Le message d'erreur est le suivant :
    Java.lang.NoClassDefFoundError : dao/inter/IUserDao
    Quelqu'un à une idée pour résoudre cette erreur?

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    C'est une erreur de frappe la différence entre : dao/inter/iUserDao et IUserDao ?

    Sinon la classe se trouve-t-elle bien dans WEB-INF/classes ?
    Ou, si elle est dans un jar, le jar se trouve-t-il dans WEB-INF/lib ?

  3. #3
    Membre éclairé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut
    oui erreur de frappe, je corrige

    aucun des deux. J'ai inclue le répertoire via ellipse en faisant
    click-Droit sur le project > propertie > buildPath > onglet projet > add

    je n'est pas de répertoire classe dans le web-Inf

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ton jar doit se trouver dans /WEB-INF/lib comme le disait Mathieur.J
    Le répertoire classes n'a rien à voir, là se trouveront les classes java du projet...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut
    justement, je n'ai pas de jar.
    Puisque j'utilise ce que j'ai écrit précédemment pour inclure le projet hibernate dans le projet web.

    Cela me permet de modifier le projet hibernate sans avoir à régénéré un jar

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Quand je demande pour WEB-INF/classes je parle des .class générés, à l'intérieur du WAR.

    Normalement si tout est bien configuré toute classe .java qui se trouve dans ton buildpath doit s'y retrouver après compilation.

    A mon avis c'est la configuration de ton "inclusion" que ne fonctionne pas correctement.

  7. #7
    Membre éclairé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut
    ok, avec eclipse les .class se retrouve dans le build/classes.

    J'ai bien les .class du projet web mais effectivement ceux du projet java sont manquante. Je ne sais pas pourquoi .

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Si je comprends bien, tu as 2 projets :
    un pour le web
    l'autre pour la persistence (hibernate)

    Tu devrais passer par un EAR pour le packaging de ton application
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Tu devrais passer par un EAR pour le packaging de ton application


    Faut pas déconner non plus. C'est le bazooka là pour tuer la mouche. Regarde le WAR que eclipse génère au moment de déployer sous ton serveur. Si tu va dans le dossier du serveur, tu devrais l'y trouver. Et dans ce war, eclipse devrais avoir mis le contenu de ton autre projet sois sous forme d'un jar généré à la volée, soit directement dans WEB-INF/classes

    le build/classes, c'est juste là où eclipse les met avant de générer le war.

    Personellement, j'utilise maven pour gérer mes dépendances et je n'ai aucun soucis avec ce genre d'architecture (un projet web + des projets sur le coté) et eclipse me met toujours les dernières versions lors du "run on server". Maintenant, je ne sais pas comment le plugin maven a configuré les projets eclipse pour y arriver

  10. #10
    Membre éclairé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut
    Je vais regarder ce que tu me dis. Je te tiens au courant .

  11. #11
    Membre éclairé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut
    Alors, j'ai changer de workspace vu que j'ai lu sur le net que ça pouvais être un bug d'eclipse Hélios. Effectivement, maintenant que ce soit dans le war générée ou dans l’exécution depuis eclipse, le jar du projet hibernate est bien inclue dans le projet web.

    Seulement, il n'exporte pas les librairies nécessaire au projet hibernate.
    Du coups j'ai des NoClassDefFoundError sur les import hibernate.

    Comment je peux corriger ça?

    [EDIT] J'ai ajouter les jar Hibernate via le deploiement assembly du projet.
    Du coups les jar sont bien inclus dans le jar du projet hibernate lui même inclus dans le war du projet web.

    Mais j'ai toujours un NoClassDefFoundError sur org.hibernate.cfg.Configuration
    alors que le jar Hibernate-core contenant cette classe est bien présent dans le jar du projet hibernate.

    [EDIT2] En ajoutant les lib dans le répertorie lib de tomcat, je n'est plus d'erreur. Donc cela viens bien du faite que malgré que les jar soit présent , il ne les trouve pas.

    [Edit3] J'ai quelque chose qui marche. J'ai ajouté les lib dans le deploiement assembly mais cette fois-ci du projet web . et tout fonctionne. Donc je pense que c'était la qu'il fallait le mettre.

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message


    Faut pas déconner non plus. C'est le bazooka là pour tuer la mouche. Regarde le WAR que eclipse génère au moment de déployer sous ton serveur. Si tu va dans le dossier du serveur, tu devrais l'y trouver. Et dans ce war, eclipse devrais avoir mis le contenu de ton autre projet sois sous forme d'un jar généré à la volée, soit directement dans WEB-INF/classes
    C'est très discutable, le standard de déploiement d'une application web avec dépendances est l'EAR... mais je n'oblige personne à l'utiliser
    Ceci dit, bonne chance quand tu voudras faire ton genre de déploiement avec un JBoss 7
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Je ne connais pas JBoss 7, mais après 2 ou 3 recherches gogole, il ne semble pas interdit de déployer un bon vieux WAR. Surtout que depuis JEE6, il est possible de déployer des EJB qui se trouvent dans un WAR afin de simplifier les applications.

  14. #14
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Quand tu as des applications simples, sans partage de la couche métier, je veux bien, mais sinon, ça ne tient pas la route...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    C'est très discutable, le standard de déploiement d'une application web avec dépendances est l'EAR... mais je n'oblige personne à l'utiliser
    Ceci dit, bonne chance quand tu voudras faire ton genre de déploiement avec un JBoss 7
    Heu dans ce cas, tu m'explique à quoi ça sert d'avoir un WEB-INF/lib ?

    le war, ça sert pour faire une application web (ce qui semble être son cas)
    le ear, ça sert à faire un application utilisant aussi des EJB, ou du JMS, ou les autres joyeusetés que fournis le conteneur en supplément, ou quand tu veux partager des ressources entre plusieurs war.

    On y est ici, à préparer notre migration sous jboss 7. Et je peux t'assurer que ce sont pas les applications war qui nous font suer, mais bien la seule application qu'on aie qui soit en EAR et qui commencer à donner des cauchemards à mon collègue

  16. #16
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je sais bien que le /WEB-INF/lib est un bon moyen de mettre les jar de l'application, mais une couche EJB3 partagée n'y a pas sa place.

    Je compatis avec ton collègue... je me fais ch... aussi avec les multiples dépendances, entre la couche JAAS (custom login module) et les facades de la couche métier des applications... J'ai du raté un truc, c'est sûr, mais je cherche...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    mais une couche EJB3 partagée n'y a pas sa place
    On est d'accord. Mais ici ça ne semble pas être le cas.

  18. #18
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Je sais bien que le /WEB-INF/lib est un bon moyen de mettre les jar de l'application, mais une couche EJB3 partagée n'y a pas sa place.
    On n'a jamais parlé d'EJB dans le problème de départ justement

  19. #19
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Damned, je me suis égaré
    Désolé
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Erreur fréquente avec ASP et IIS
    Par Community Management dans le forum ASP
    Réponses: 2
    Dernier message: 11/02/2004, 23h20
  2. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 14h49
  3. Réponses: 2
    Dernier message: 27/05/2002, 20h46
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 16h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 10h41

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