zoukankan      html  css  js  c++  java
  • java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL,spring获取context

     

    今天学习spring项目的时候出现了下面的错误信息:

    java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4854)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)

        虽然问题一眼就知道是这句话:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

      但是还是有点迷糊,因为以前练习spring的时候,是把jar包都复制到WEB-INF/Lib目录下的,但是最近练习项目的时候都是自己建立自己不同的User libaraies,很明显我已经导入了这些jar包,但是却提示这样的信息..............

    看来自己对于JVM是如何引入我们所需要的第三方jar包的机制,后来去网上仔细搜了以下,才明白其原理,下面不废话,直接重点:

    1. ava虚拟机是根据Java ClassLoader(类加载器)决定如何加载Class。  
    2. 系统默认提供了3个ClassLoader    
    3. Root ClassLoader,ClassPath Loader,Ext ClassLoader  
    4. 我们也可以编写自己的ClassLoader,去加载特定环境下的Jar文件。    
    5. 能不能加载Jar,加载哪里的Jar,是由ClassLoader决定的。    
    6.   
    7. 楼主的问题可能是 导入的仅仅是jar包的引用,例如在eclipse中通过build path加进user lib……(类似快捷方式)  
    8. 这种在Java Application中没问题,但在web Application中可能会出现找不到类的异常。  
    9. 在WEB Application中jar包最好放在webroot或webcontent下的lib文件夹内,特别是xml中用到的jar包。

    原来是我们自使用类似于Ant来获取类的时候是不能象UserLibaray来使用的,因为我们建立的是一个web app,而web app使用的是自定义的ClassLoader,而非JVM中的存在的三种ClassLoader(如上面所说),因此它无法识别出我们写在xml文件中的第三方类库的class文件,而只有我们写在src目录下的java文件才能使用,因此,我们必须要把第三方的类库放入到lib目录下,web app 才会识别我们定义在xml中的类了  .

        通这个错误,也让我对classloader的认识也进了一步.虽然以前看过周志明的深入JVM一书中关于类加载器分派体系的介绍,但是不太理解,这样一来,自己也多了一些体会.

    javalangClassNotFoundException: orgspringframeworkwebcontextContextLoa

     

    spring-web 的jar包没导进去
    jar包邮冲突,把重复的jar包删除
    在web.xml加上<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-*.xml</param-value> </context-param>
    因为默认的读取的是/WEB-INF下的配置文件,如果配置文件在src中要把路径改为类路径底下
    4.把工程刷新一下,因为工程是部署在服务器底下的,要把加入的jar包部署到工程里。

     

    启动报错:javalangClassNotFoundException: orgspringframeworkwebcontextContextLoaderListener

     

    jar包不是导入进去就完了,还要buildpath,也就是创建路径。在Myeclipse里面,右键单击你的jar包,点击build path--》add build path。完成创建路径。另外spring的jar包并非只有一个,最基本的有3个。

  • 相关阅读:
    C#中的String.Format()方法
    JQuery中的each方法
    [开发笔记]-使用jquery获取url及url参数的方法
    ThinkPHP3.2.3学习笔记3---视图
    PHP命名空间namespace使用小结
    ThinkPHP3.2.3学习笔记2---模型
    PHP中的连贯操作
    关于新技术的学习问题
    ThinkPHP3.2.3学习笔记1---控制器
    WinXP下如何安装及御载MySQL服务
  • 原文地址:https://www.cnblogs.com/printN/p/6798953.html
Copyright © 2011-2022 走看看