例如:java.lang.ClassNotFoundException: org.apache.axis2.AxisFault
1,真實的缺包,這是使用該jar包的java程序也會一般會直接報錯,無法解析類。
2,引入外部jar,但是與已有的jar包沖突,出現兩個同名的jar包,這種情況會讓classloader不知道加載哪一jar包,這程序運行時也會報ClassNotFoundException,但是java程序因為指定了jar包,所以不會報錯。
3,在referred中添加jar包,tomcat運行時報找不到,將jar包移到WEV-INF的lib目錄下,這時tomcat運行不報錯。原因分析:可能是tomcat的classloader優先在lib下找到了存在且唯一的包后,使程序得以通過。放在referred的jar包與已有的包沖突,使得tomcat在systemClassLoader中報ClassNotFoundException。這個應該與tomcat的classloader機制相關。
4,web項目的編譯與運行:
eclipse工程下的library是用來編譯里面的src中java文件的,實際發布到tomcat時,僅僅只復制了WEB-INF/lib里面的jar包,所以出現eclipse可以正常編譯但tomcat運行是找不到類。
tomcat classloader機制轉載:
http://blog.csdn.net/losing_coder/article/details/7327538