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

时间:2013-04-13 15:19:05

标签: eclipse spring jsf-2 tomcat6

我遇到了部署项目的问题,我使用jsf / spring / hibernate作为框架,我添加了必要的jar专门org.springframework.web-3.1.0.CI-1162,错误是:

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)

并添加了罐子列表:

ANTLR-2.7.6.jar

公地dbcb-1.4.jar

公地集合-3.1.jar

公地pool.1.6.jar

共享记录-1.1.jar

DOM4J-1.6.1.jar

hibernate.jar文件

冬眠-JPA-2.0-API-1.0.1.Final.jar

iText-5.0.4.jar(For Primefaces)

了Javassist-3.9.0.GA.jar

com.springsource.org.jboss-el-2.0.0.GA.jar(在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(适用于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(For Primefaces)

primefaces-3.5jar

SLF4J-API-1.6.1.jar

SLF4J-jdk14-1.6.1.jar

qlfj4-log4j12-1.6.4.jar

6 个答案:

答案 0 :(得分:23)

对于此错误,可以有不同的解决方案。我记下那些对我有用的东西。

解决方案1。这在部署和调试环境中总是会发生。 在部署环境中,只需确保您的服务器类路径包含Spring jar库(例如spring-4.0.4.jar)。

在调试环境中,步骤可能因IDE而异,但解决方案是相同的。在Eclipse中,开发人员通常会创建一个tomcat,jboss ...无论用于调试的应用程序服务器,只需确保包含正确的Spring jar。

  1. 双击调试服务器
  2. 单击“打开启动配置”以访问服务器环境
  3. 单击类路径选项卡
  4. 在这里包含Spring jar文件,由于Spring依赖,它可能还需要常见的日志jar。
  5. 完成,再次运行您的应用程序。
  6. 解决方案2. 如果您使用Maven作为构建工具并使用它来下载依赖项,则可能存在一些jar冲突。因为Tomcat服务器通常提供一些jar,例如servlet-api和jpa-api。所以,如果你再次使用maven包含它们;识别它们会有问题。

    解决方案3. 如果您使用Eclipse作为IDE并使用Maven作为构建工具并使用tomcat作为服务器;记住Tomcat服务器不会查看文件夹内的jar。为此,这是一个小技巧,

    1. 右键点击 项目 ,然后选择 属性
    2. 从显示的窗口中,选择 部署程序集
    3. 选择 添加
    4. 添加 Maven依赖项
    5. 点击 应用 ,然后点击 确定
    6. 希望其中一种解决方案可以帮助您解决问题。 快乐编码并确保使用Java。

答案 1 :(得分:1)

在我的情况下,我使用maven来构建项目,只是因为war文件未正确创建,它将导致此异常。 我检查war文件并再次运行install,解决了我的问题。

答案 2 :(得分:0)

您必须下载必要的jar文件。您可以从以下链接下载spring-context.jar文件

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

答案 3 :(得分:0)

我建议您使用最新版本替换所有Spring jar(3.2.2.RELEASE)

答案 4 :(得分:0)

确保您的服务器类路径包含Spring jar库。 Watch this link

答案 5 :(得分:0)

我使用eclipse,发现Deployment Assembly上没有maven依赖项配置, 所以我从

修改了.classpath
     <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>