1. 程式人生 > >tomcat類載入器找不到jar包中的類問題分析與解決思路

tomcat類載入器找不到jar包中的類問題分析與解決思路

我們忽略了tomcat內部自定義的類載入器只想到了JVM的那幾個載入器,tomcat有個叫webApp的載入器它是先載入WEB-INF/classes後在載入WEB-INF/lib,但它的父載入器是它的common載入器,comon的父載入器是system載入器(和JVM的應用程式載入器功能差不多,不過指定了其他tomcat目錄下的載入,大家可以看看官網上的英文文件),但是原始碼中這個載入器是URLClassLoader的子類,而URLClassLoader預設父載入tomcat下是它的system載入器這麼設計和tomcat的<Loader delegate="true"/>配置有關,預設為無為false,會直接委託給tomcat的system載入器載入system委託最頂層的Bootstrap載入器(差不多是JVM裡起始載入器和擴充套件載入器的合併),但不管怎麼樣,專案在tomcat下自定義的或者URLClassLoader載入預設父載入器都不會是tomcat的webApp載入器而是system載入器,或者自定義的載入器或URLClassLoader和tomcat的webApp載入器沒有上下關係
,所以動態建立類時設計到其他類時肯定會報CNF異常。