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

Spring Java Discussion :

NoClassDefFoundError incompréhensible ! [Integration]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 39
    Par défaut NoClassDefFoundError incompréhensible !
    Bonjour à tous !

    Je suis entrain de m'autoformer à Spring. J'ai donc créé un projet Eclipse Java simple, installé Spring IDE et ajouté Spring nature au projet. J'ai créé une classe de test que voici :
    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
     
    public class Test {
    	private CompanyDao companyDao;
    	private ApplicationContext context;
     
    	public Test(){
    		this.context = new ClassPathXmlApplicationContext("beans.xml");
    	}
     
    	public void setCompanyDao(CompanyDao companyDao){
    		this.companyDao = companyDao;
    	}
     
    	public CompanyDao getCompanyDao(){
    		return this.companyDao;
    	}
    }
    Mon beans.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <bean id="CompanyDao" class="jsm.jdbc.dao.impl.CompanyDaoImpl">
    </bean>
    <bean id="Test" class="jsm.Test">
    	<property name="companyDao">
    		<ref local="CompanyDao" />
    	</property>
    </bean>
    Dans mon Main, je fais un new Test() et puis un print en fonction de la valeur de test.getCompanyDao() pour savoir si l'injection a fonctionné.
    Problème, à l'exécution dans eclipse, j'ai ceci
    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
     
    Exception in thread "main" java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:946)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:892)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
    	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
    	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
    	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    	at jsm.Test.<init>(Test.java:13)
    	at jsm.Main.main(Main.java:10)
    Pourtant, tous les jars sont ajoutés au ClassPath, dont org.springframework.beans qui contient bien la classe FatalBeanException...
    Alors je ne comprends plus !

    Si quelqu'un pouvait m'éclairer...

  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
    quand tu fais un import da FatalBeanException dans ton code, y a-t-il une erreur?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 39
    Par défaut
    Merci pour ta réponse.
    Non, en faisant un import de org.springframework.beans.FatalBeanException et en faisant même un new FatalBeanException("test"), tout passe sans erreur... Allez comprendre ! lol

  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
    ces jars sont bien présents dans le classpath d'exécution? (run as -> run configurations)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 39
    Par défaut
    Oui, je les vois bien dans "Classpath" et dans "Sources"...

  6. #6
    Membre confirmé
    Homme Profil pro
    Expert MDE
    Inscrit en
    Janvier 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert MDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 183
    Par défaut
    Salut,

    Pour une classe de test, tu pourrai aussi faire quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(
    locations = { "/META-INF/spring/applicationContext.xml" })
    public class UtilisateurImplTest {
    @Test
    public final void testSetNullName()
    Pour cela, j'ai utilisé spring-tests 3.0 et junit.
    Je ne sais pas si ça conviendrai, mais selon moi, c'est un peu plus propre que de d'appeler le ClassPathXMLApplicationContext dans chacun des tests.


    Pour ton souci, avec Spring le new ne fonctionne pas (anti pattern qui désactive l'IOC) il faut que tu appelle ctx.getBean("Test") à la place.
    Si tu veux utiliser l'opérateur new, il faut que tu annote ta classe Test avec @Configurable, utiliser aspectj, spring-aspects, spring-aop et rajouter ceci dans ton application-context:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <context:spring-configured/>
    Finalement rajouter le spring-agent comme argument vm lors de l'execution du tout (google est ton ami).
    En somme, ça demande un bon coût d'entrée (tout ça pour new..).
    Je ne le recommande pas pour débuter, mais par la suite le jeu en vaut la chandelle.

    J'espère que ça te sera utile, Charlie

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

Discussions similaires

  1. incompréhension avec ado
    Par Orgied dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/05/2004, 18h24
  2. [Manifest][jar] NoClassDefFoundError ...
    Par Slein dans le forum Général Java
    Réponses: 8
    Dernier message: 30/04/2004, 14h14
  3. [JUnit] NoClassDefFoundError:junit/framework/TestCase
    Par Adjanakis dans le forum Tests et Performance
    Réponses: 4
    Dernier message: 14/04/2004, 13h23
  4. [WSAD5] probleme incompréhensible
    Par capitaine_banane dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 07/04/2004, 11h56
  5. [JSP] Erreur incompréhensible
    Par xxaragornxx dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/09/2003, 16h37

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