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

Maven Java Discussion :

ClassCastException: 2 classes du même nom dans 2 jars différents


Sujet :

Maven Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut ClassCastException: 2 classes du même nom dans 2 jars différents
    Hi folks,

    Je travaille sur un projet J2EE que je gère avec Maven 2 et déploie sur weblogic (jusque là tout va bien). Le problème c'est que dans mes dépendances (jars) j'ai des classes qui ont les mêmes noms (pas dans le même jar) avec des structures différentes.
    Quand je build avec Eclipse et mvn (mvn clean package war:exploded...) tout se passe bien, au déploiement aussi tout va bien, mais quand j'exécute, j'ai une ClassCastException car il prend une classe d'un jar au lieu d'une autre.
    j'ai extrait tous les jars dans un seul en organisant tout ça en packages mais toujours même problème: il prend la première classe qui se trouve dans le premier package qu'il rencontre (en ordre alphabétique) et l'utilise partout.
    Je ne sais pas si ça vient de maven ou de weblogic...

    Quelqu'un aurait une idée??

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    C'est bizarre ton problème...
    Le nom d'une classe n'est pas la seule information nécessaire pour le ClassLoader. Il utilise aussi le nom du package.
    Ainsi, toto.MaClasse et bidule.MaClasse ne sont pas les mêmes classes, bien qu'elles portent le même nom.

    Là où il faut être vigilent, c'est dans la classe utilisant MaClasse, et bien vérifier les imports. Eclipse permet d'organiser et de ranger les imports automatiquement (Ctrl+Shift+O). Mais dans le cas d'un doute, il va demander à l'utilisateur de choisir quelle est la bonne classe.

    Ce code pourrait être faux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import toto.MaClasse;
     
    ...
    public void uneMethode(Object obj) {
        MaClasse x = (MaClasse) obj;
        ...
    }
    si tu voulais en réalité que x soit du type bidule.MaClasse et non toto.MaClasse.
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Merci pour ta réponse! Les imports c'est la première chose que j'ai vérifié, je les ai même enlever et mis la classe avec son chemin à chaque fois ( bidule.MaClasse maclasse = ... ) mais toujours même souci

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Et la Stacktrace, elle dit quoi ?
    L'exception arrive lors de quelle opération ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Finalement Maven en était innocent, c'est XMLBeans qui ne sait pas gérer quand 2 classes ont le même nom (c'est sur leur wiki http://wiki.apache.org/xmlbeans/XmlBeansFaq).

    Je met donc le sujet à "résolu"!

    Merci

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

Discussions similaires

  1. 2 classes de même nom dans 2 projets différents
    Par Arn's dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 03/11/2009, 23h12
  2. Travailler avec 2 classes du même nom
    Par ronio dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 31/12/2007, 11h11
  3. 2 fonctions de même nom dans 2 fichiers
    Par coachllb dans le forum Langage
    Réponses: 1
    Dernier message: 21/10/2007, 11h03
  4. [C#]Insérer le même nom dans deux treeview
    Par fafa139 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/04/2006, 19h58
  5. package ambiguïté pour des classes de même nom
    Par soad dans le forum Langage
    Réponses: 2
    Dernier message: 10/06/2004, 19h25

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