zoukankan      html  css  js  c++  java
  • ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    使用maven2 和 tomcat6 在eclipse wtp上开发基于Spring2.5+Struts2的web应用程序。启动tomcat的时候报错:

    2012-11-17 11:11:34 org.apache.catalina.core.StandardContext listenerStart

    严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener

    java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)

    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)

    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4148)

                at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)

    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)

    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)

    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)

    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(NativeMethodAccessorImpl.java:39)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

     

    报错的后果是Spring没有加载bean容器的配置文件。致使server无法启动。

    经过仔细的对比,我发现项目下的.classpath与正常的不一样,我的是这样的:

    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>

    正常的是这样的:

     

    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">

    <attributes>

    <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>

    </attributes>

    </classpathentry>

     差别就在这个classpathentry下的attributes里了。没有找到对这个配置的直接说明。不过可以分析下这个问题。显然这个entry是为maven2的classpath准备的,显然/WEB-INF/lib不属于maven2的类路径,因此可以得出结论这是临时给Maven2的类路径加了一写jar。谁需要这些jar呢,从org.eclipse.jst.component.dependency这个名字来看,应该是eclipse的一个插件需要。

    因此可以进一步推测,这个web应用在部署时,maven会把所有相关的jar包拷贝到WEB-INF的lib下,就和普通的WEB应用一样。如果没有个attributes,maven插件就不会把这些jarcopy过去。这样WTP运行时,lib目录是空的,就会导致class not found的意外。

    不过这只是推测,具体情况有待进一步考证。

  • 相关阅读:
    结对编程
    个人项目(JUnit单元测试)
    我的第一个GitHub仓库
    Visual Studio 创建C++或C#Windows程序
    字符串操作
    练习数值计算
    Hello World
    ceph部署出现错误及解决
    asp.net mvc 用Redis实现分布式集群共享Session。
    Unable to load DLL 'rasapi32.dll': 动态链接库(DLL)初始化例程失败。
  • 原文地址:https://www.cnblogs.com/alphablox/p/2775312.html
Copyright © 2011-2022 走看看