【问题标题】:java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContextjava.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
【发布时间】:2013-04-06 00:59:25
【问题描述】:

我在部署我的项目时遇到了问题,我使用 jsf/spring/hibernate 作为框架,我特别添加了必要的 jars 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)

以及添加的 jar 列表:

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(用于 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(用于 Primefaces)

primefaces-3.5jar

slf4j-api-1.6.1.jar

slf4j-jdk14-1.6.1.jar

qlfj4-log4j12-1.6.4.jar

【问题讨论】:

  • 你是如何构建战争文件的? (Maven?Ant?Eclipse?)
  • 如果您在此处找到正确答案,请将其标记为正确,以便将来遇到类似问题的访问者有所帮助。谢谢

标签: eclipse spring jsf-2 tomcat6


【解决方案1】:

我用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>

【讨论】:

    【解决方案2】:

    在我的情况下,我使用maven构建项目,只是因为war文件没有正确创建,就会导致这个异常。 我检查了war文件并再次运行安装,这解决了我的问题。

    【讨论】:

      【解决方案3】:

      对于这个错误,可以有不同的解决方案。我已经记下了对我有用的那些。

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

      在调试环境下,不同的IDE,步骤可能不同,但解决方法是一样的。在 Eclipse 中,开发人员通常会创建一个 tomcat、jboss……任何应用程序服务器进行调试,只要确保包含正确的 Spring jar 即可。

      1. 双击您的调试服务器
      2. 点击“打开启动配置”进入服务器环境
      3. 单击类路径选项卡
      4. 在此处包含 Spring jar 文件,由于 Spring 依赖,它可能还需要 common log jar。
      5. 完成,再次运行您的应用程序。

      .

      解决方案 2. 如果您使用 Maven 作为构建工具并使用它下载依赖项,则可能存在一些 jar 冲突。因为Tomcat服务器一般会提供一些jar包如servlet-api和jpa-api。因此,如果您再次使用 Maven 将它们包括在内;识别它们会有问题。

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

      1. 右键单击您的项目并选择属性
      2. 从显示的窗口中,选择部署程序集
      3. 选择添加
      4. 添加 Maven 依赖项
      5. 点击应用并点击确定

      希望这些解决方案之一能帮助您解决问题。 快乐编码并确保使用 Java。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 我之前尝试过其他版本的spring,但问题相同!!
          • 更新 spring jars 的版本是造成这个问题的原因。
          【解决方案6】:

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

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

          【讨论】:

          • spring-context 已在列表中 (org.springframework.context-3.1.0.CI-1162.jar)
          • 如果不尝试这个 jar 文件,您将无法知道。我也更新了我的答案
          • 你可以在这个jar文件中看到ApplicationContext类。
          • 嗯,你真的认为用 3.2.2.RELEASE 版本替换这个 one jar 是个好主意,而不是其他 spring jar? OP 的设置严重错误
          • 类 ApplicationContext 在 jar 中!这就是为什么我找不到解决方案、任何建议、任何帮助的原因??
          猜你喜欢
          • 2017-02-19
          • 1970-01-01
          • 1970-01-01
          • 2014-04-15
          • 2021-05-28
          • 1970-01-01
          • 2015-10-14
          • 2015-02-04
          • 2015-04-22
          相关资源
          最近更新 更多