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

Wildfly/JBoss Java Discussion :

java.lang.NoClassDefFoundError au déploiement d'un ear


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut java.lang.NoClassDefFoundError au déploiement d'un ear
    Bonjour à tous,

    Comme pas mal de monde j'ai l'impression, j'ai un java.lang.NoClassDefFoundError au déploiement de mon application sous JBoss EAP 4.3.0 CP02.

    Le truc, c'est que le .jar est évidemment présent dans mon ear. Et que si je le sors de l'ear (pour le mettre dans /server/<maconfig>/lib par exemple), ça marche bien (enfin, ça fait la même erreur au jar suivant quoi mais je suppose que si je les sortais tous, ça finirait par passer).

    Le fait est que je ne peux pas tous les sortir (d'une part, ça ferait beaucoup de boulot, et d'autre part, je ne suis que l'intermédiaire...). Bref, je voudrais comprendre pourquoi JBoss ne trouve pas les jar compris dans mon ear ?

    J'ai essayé de bidouiller un peu le MANIFEST.MF mais sans grand succès (en même temps, ce n'est pas ce que je connais le mieux).

    Structure de l'ear :
    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
     
    +---apache
    ¦   +---jakarta
    ¦   ¦   +---commons
    ¦   ¦       +---io
    ¦   ¦       ¦   +---
    ¦   ¦       +---logg
    ¦   ¦       ¦   +---
    ¦   ¦       +---math
    ¦   ¦           +---
    ¦   +---xml
    ¦       +---xmlbean
    ¦           +---jars
    +---cglib
    ¦   +---jars
    +---ehcache
    ¦   +---jars
    +---jboss
    ¦   +---as
    ¦   ¦   +---jars
    ¦   +---hibernate
    ¦       +---jars
    +---META-INF
    ¦   +---WEB-INF
    +---objectweb
    ¦   +---jars
    +---springframework
        +---jars
    Fichiers à la racine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    app-jboss.jar
    app-jboss.war
    app.properties
    A savoir que le app-jboss.jar contient un MANIFEST.MF très complet avec les .jar des autres dossiers (apache/jakarta...)

    Merci pour vos avis

  2. #2
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    J'ai peut être omis un détail: en fait, j'ai 2 ear. Le second utilisant les class du premier...

    Et j'ai l'impression que je n'ai plus l'erreur quand je retire le second ear... donc est-ce que cela pourrait venir du fait que JBoss tente de déployer celui-ci avant l'ear comportant les class ?

    Peut-on définir quel ear à charger en premier ?

    ==> oui, on peut, il suffit de changer d'URLComparator dans le jboss-service.xml...

    Je continue à chercher, mais si quelqu'un a des idées, je suis toujours preneur

  3. #3
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    J'ai essayé de bidouiller un peu le MANIFEST.MF
    A priori, dans un ear, c'est plutôt l'application.xml qu'il faut bidouiller.

    Sinon, tu peux essayer de mettre tes jar dans le lib de ton ear.

    Pour ce qui est des dépendances entre ear, c'est contraire à JavaEE, mais conforme au paramétrage par défaut de JBoss. Il existe une solution simple pour gérer l'ordre de démarrage : renommer un des fichiers, pour que son initiale précède l'autre.

  4. #4
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Citation Envoyé par hasalex Voir le message
    A priori, dans un ear, c'est plutôt l'application.xml qu'il faut bidouiller.

    Sinon, tu peux essayer de mettre tes jar dans le lib de ton ear.

    Pour ce qui est des dépendances entre ear, c'est contraire à JavaEE, mais conforme au paramétrage par défaut de JBoss. Il existe une solution simple pour gérer l'ordre de démarrage : renommer un des fichiers, pour que son initiale précède l'autre.

    Le problème, c'est que je ne peux normalement pas trop toucher à la structure du-dit ear :/

    Je vais regarder l'application.xml

    Ce qui me dérange le plus, c'est vraiment le fait que cela marche si je sors les jar de l'ear... je ne comprends pas pourquoi il ne les trouve pas quand ils sont dedans ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Points : 0
    Points
    0
    Par défaut
    Salut,

    comme dit hasalex, le probleme vient surement du application.xml ...

    Lorsque tu sors les jars ils sont deployées independamment sur le serveur et donc il les trouve...

    dans ton application.xml, tu dois definir les liens vers tes .jars et/ou ton .war

  6. #6
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    J'ai proposé de mettre les jars dans le répertoire lib car, en JavaEE 5, c'est le répertoire par défaut des librairies d'un ear.

    Si tu ne peux pas changer la structure de l'ear, il faut déclarer tous les jars. Ce n'est pas parce qu'un jar est dans l'ear qu'il est chargé...

  7. #7
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Citation Envoyé par hasalex Voir le message
    J'ai proposé de mettre les jars dans le répertoire lib car, en JavaEE 5, c'est le répertoire par défaut des librairies d'un ear.

    Si tu ne peux pas changer la structure de l'ear, il faut déclarer tous les jars. Ce n'est pas parce qu'un jar est dans l'ear qu'il est chargé...
    Ok, merci pour les infos.

    En fait, l'application.xml de mon ear contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      <module>
        <ejb>app-jboss.jar</ejb>
      </module>
    Et dans le app-jboss.jar, le MANIFEST.MF est correct (enfin, il regroupe tous les jar de l'ear).

    Donc je suppose que cette partie là est correcte... En dernier recours, j'ai essayé de reprendre tout à 0, et ça a l'air de passer cette fois... donc je suppose qu'il y a un truc qui avait raté la première fois et qui provoquait cette erreur :/ Mais je ne comprends pas trop : l'ear est le même, la config serveur devrait être la même... bref

    Merci encore pour vos remarques !

  8. #8
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Je te suggère d'abandonner ton manifest et de mettre la liste de tes jars dans l'application.xml sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <module>
      <java>my.jar</java>
    </module>

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Points : 0
    Points
    0
    Par défaut
    oui, et n'oublie pas non plus les liens vers le .war le cas échéant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <description>Test</description> 
    	<display-name>Test</display-name> 
    	<module>
      		<ejb>Test.jar/</ejb> 
     
      	</module>
    	<module>
    		<web>
      			<web-uri>Test.war</web-uri> 
      			<context-root>Test</context-root>
    		</web>
      	</module>
    donc avec la balise <web> en plus ...

    et aussi fais attention a l'entete de ce fichier application.xml, en fonction de la version ear que tu veux utiliser !

  10. #10
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Merci pour ces infos, je vais regarder.

    Mais le fait est que je n'ai pas vraiment la main sur cette partie :/ Je suis sensé faire avec ce qui m'est fourni

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 26
    Points
    26
    Par défaut
    oui je confirme je viens d'avoir le même problème.
    la fichier application.xml doit être modifié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0" encoding="UTF-8"?>
    <application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
      <display-name>EHealthEAR-ear</display-name>
      <module>
        <ejb>EJB.jar</ejb>
      </module>
      <module>
        <web>
          <web-uri>web.war</web-uri>
          <context-root>/web</context-root>
        </web>
      </module>
    </application>
    pour info il existe un plugin Maven qui gère correctement cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <version>5</version>
                <includeLibInApplicationXml>true</includeLibInApplicationXml>
            </configuration>
          </plugin>
    et par défaut cette valeur est à false....

  12. #12
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    humpf, merci, mais ça fait 2 ans maintenant, et je ne bosse plus vraiment sur ce sujet ;o)

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 20/05/2015, 21h36
  2. [DisplayTag] java.lang.NoClassDefFoundError: org/apache/commons/lang/UnhandledException
    Par MAJIK_ENIS dans le forum Taglibs
    Réponses: 18
    Dernier message: 06/04/2006, 10h18
  3. [Plugin][Hibernate Tools] java.lang.NoClassDefFoundError
    Par notrustinyou dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/11/2005, 17h17
  4. [ eclipse3 ] [ Deb. ] java.lang.NoClassDefFoundError:
    Par Marc_3 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/10/2005, 12h26
  5. [Struts] java.lang.NoClassDefFoundError
    Par Zephoria dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/02/2005, 10h51

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