web-dev-qa-db-fra.com

java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext

J'ai rencontré des problèmes pour déployer mon projet que j'utilise jsf/spring/hibernate en tant que faramework, j'ai ajouté les binaires nécessaires spécialement org.springframework.web-3.1.0.CI-1162, l'erreur est la suivante:

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
Java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
    at Java.lang.Class.getDeclaredConstructors0(Native Method)
    at Java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at Java.lang.Class.getConstructor0(Unknown Source)
    at Java.lang.Class.newInstance0(Unknown Source)
    at Java.lang.Class.newInstance(Unknown Source)
    at org.Apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:4150)
    at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4705)
    at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:799)
    at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:779)
    at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:601)
    at org.Apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.Java:675)
    at org.Apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.Java:601)
    at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:502)
    at org.Apache.catalina.startup.HostConfig.start(HostConfig.Java:1317)
    at org.Apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.Java:324)
    at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:142)
    at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1065)
    at org.Apache.catalina.core.StandardHost.start(StandardHost.Java:840)
    at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1057)
    at org.Apache.catalina.core.StandardEngine.start(StandardEngine.Java:463)
    at org.Apache.catalina.core.StandardService.start(StandardService.Java:525)
    at org.Apache.catalina.core.StandardServer.start(StandardServer.Java:754)
    at org.Apache.catalina.startup.Catalina.start(Catalina.Java:595)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at Java.lang.reflect.Method.invoke(Unknown Source)
    at org.Apache.catalina.startup.Bootstrap.start(Bootstrap.Java:289)
    at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:414)

et la liste des pots ajouté:

antlr-2.7.6.jar

commons-dbcb-1.4.jar

commons-collections-3.1.jar

commons-pool.1.6.jar

commons-logging-1.1.jar

dom4j-1.6.1.jar

hibernate3.jar

hibernate-jpa-2.0-api-1.0.1.Final.jar

iText-5.0.4.jar (pour les primefaces)

javassist-3.9.0.GA.jar

com.springsource.org.jboss-el-2.0.0.GA.jar (facultatif pour l'exécution sur Tomcat 6)

jsf-api.jar (Mojarra 2.0.4)

jsf-impl.jar (Mojarra 2.04)

jta-1.1.jar

log4j-1.2.11.jar

mysql-connector-Java-5.0.5.jar (pour MySQL)

org.springframework.aop-3.1.0.CI-1162.jar

org.springframework.asm-3.1.0.CI-1162.jar

org.springframework.aspects-3.1.0.CI-1162.jar

org.springframework.beans-3.1.0.CI-1162.jar

org.springframework.context-3.1.0.CI-1162.jar

org.springframework.context.support-3.1.0.CI-1162.jar

org.springframework.core-3.1.0.CI-1162.jar

org.springframework.expression-3.1.0.CI-1162.jar

org.springframework.jdbc-3.1.0.CI-1162.jar

org.springframework.orm-3.1.0.CI-1162.jar

org.springframework.oxm-3.1.0.M1.jar

org.springframework.transaction-3.1.0.CI-1162.jar

org.springframework.web-3.1.0.CI-1162.jar

org.springframework.web.portlet-3.1.0.M1.jar

org.springframework.web.servlet-3.1.0.CI-1162.jar

poi-3.2-FINAL-20081019.jar (pour les primefaces)

primefaces-3.5jar

slf4j-api-1.6.1.jar

slf4j-jdk14-1.6.1.jar

qlfj4-log4j12-1.6.4.jar

7
hela

Pour cette erreur, il peut y avoir différentes solutions. J'ai noté celles qui avaient fonctionné pour moi.

Solution 1. Cela se produit toujours dans les environnements de déploiement et de débogage. Dans un environnement de déploiement, assurez-vous simplement que votre chemin d'accès aux classes du serveur a inclus la bibliothèque Spring jar (par exemple, spring-4.0.4.jar).

Dans un environnement de débogage, les étapes peuvent différer d'un IDE différent, mais la solution est la même. Dans Eclipse, les développeurs créent généralement un Tomcat, un jboss… quel que soit le serveur d'application utilisé pour le débogage, assurez-vous simplement que les fichiers jar Spring appropriés sont inclus.

  1. Double-cliquez sur votre serveur de débogage
  2. Cliquez sur «Ouvrir la configuration de lancement» pour accéder à l'environnement du serveur.
  3. Cliquez sur l'onglet classpath
  4. Incluez le fichier jar Spring ici, il peut également nécessiter un journal jar commun en raison de la dépendance de Spring.
  5. C'est fait, relancez votre application.

.

Solution 2. Si vous utilisez Maven en tant qu'outil de construction et que vous téléchargez des dépendances à l'aide de celui-ci, il peut y avoir un conflit de fichiers jar. Parce que les serveurs Tomcat fournissent normalement des fichiers jar tels que servlet-api et jpa-api. Donc, si vous les incluez à nouveau avec maven; il y aura des problèmes pour les identifier.

Solution 3. / Si vous utilisez Eclipse en tant que IDE et en utilisant Maven en tant qu'outil de construction et Tomcat en tant que serveur; Rappelez-vous que le serveur Tomcat ne regardera pas les pots qui se trouvent juste à l'intérieur des dossiers. Pour cela il y a un petit truc,

  1. Faites un clic droit sur votre projet et sélectionnez properties
  2. Dans la fenêtre affichée, sélectionnez Deployment Assembly
  3. Sélectionnez Ajouter
  4. Ajouter Dépendances Maven
  5. Cliquez sur Appliquer et cliquez surOK

J'espère qu'une de ces solutions vous aidera à résoudre votre problème. Happy Coding et assurez-vous qu'il utilise Java.

23
KingFeming

Dans ma situation, j’utilise maven pour construire le projet, car le fichier war n’est pas créé correctement, cela entraîne cette exception. Je vérifie le fichier war et relance l’installation, ce qui résout mon problème.

1
Mariuszy

Je vous suggère de remplacer tous les pots Spring par la version la plus récente (3.2.2.LELEASE)

0
artbristol

J'utilise Eclipse et constate qu'il n'y a pas de dépendances maven configurées sur Deployment Assembly , j'ai donc modifié .classpath depuis

     <classpathentry kind="con" path="org.Eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
       <attributes>
            <attribute name="maven.pomderived" value="true"/>
       </attributes>
     </classpathentry>

à

     <classpathentry kind="con" path="org.Eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
       <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.Eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
       </attributes>
     </classpathentry>
0
xuhaojin

Assurez-vous que votre chemin d'accès aux classes du serveur a inclus la bibliothèque de jar Spring. Regardez ce lien .

0
proxy

Vous devez télécharger le fichier JAR nécessaire. Vous pouvez télécharger le fichier spring-context.jar à partir du lien suivant

http://mvnrepository.com/artifact/org.springframework/spring-context/3.2.2.RELEASE

0
olyanren