zoukankan      html  css  js  c++  java
  • 解决classNotFound的问题的思路

    用Ctrl+Shift+t可以查看class,对于报错信息,我们把没有找到的class放到查找框里进行查看,找到之后把这个jar包放到WEB-INF的lib目录下,build path一下就可以了。

    以上是在java web项目中,没有使用maven的情况可以使用.

    如果使用maven,有时也会碰到这种情况,原因可能是jar包冲突,也可能是tomcat缓存,还可能是jar包放到了jre的ext目录.分情况处理.

    1 tomcat缓存问题,最笨的方法,eclipse中project-clean,然后再选build Automatically,删除server,也就是tomcat,然后重新启动eclipse,重新添加tomcat,向tomcat容器添加项目.

    2 jar包放到了jre的ext目录.由于classPath的加载顺序是

    1)BootstrapClassLoader(启动类加载器) 
      负责加载$JAVA_HOME中jre/lib/rt.jar里所有的class,加载System.getProperty(“sun.boot.class.path”)所指定的路径或jar。 
    2)ExtensionClassLoader(标准扩展类加载器) 
      负责加载java平台中扩展功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar或-Djava.ext.dirs指定目录下的jar包。载System.getProperty(“java.ext.dirs”)所指定的路径或jar。 
    3)AppClassLoader(系统类加载器) 
      负责记载classpath中指定的jar包及目录中class 
    4)CustomClassLoader(自定义加载器) 
      属于应用程序根据自身需要自定义的ClassLoader,如tomcat、jboss都会根据j2ee规范自行实现

    如果一个jar包放到jre的ext目录,则会第二顺序加载,它依赖的jar包只会从BootstrapClassLoader中查找,如果依赖后面的加载器,也会报错。解决办法就是退出eclipse后,删除ext中的相关jar包。将jar包放到AppClassLoader或自定义的加载器中。

    3 jar包冲突,如果发现某各类继承自两个以上jar包,这就需要用maven的排除功能,后者直接删除低版本的jar包。

  • 相关阅读:
    南桥-- 算法训练 2的次幂表示
    Ajax系列之中的一个:ajax旧貌换新颜
    ASP.NET综合管理ERP系统100%源代码+所有开发文档
    创业建议干货分享
    读取properties属性文件——国际化
    測试赛C
    Android 自己定义ViewGroup手把手教你实现ArcMenu
    【VBA研究】利用DateAdd函数取上月或上年同期的日期
    【Java集合源代码剖析】TreeMap源代码剖析
    openstack neutron L3 HA
  • 原文地址:https://www.cnblogs.com/coodream2009/p/8298419.html
Copyright © 2011-2022 走看看