tomcat找不到class的情況分析


例如: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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM