新建乙個web專案然後新建乙個servlet,在servet的doget方法中我們迴圈的遍歷出所有的類載入器(由低到高)
classloader loader = this.getclass().getclassloader();
while(loader != null)
接著將這個web專案部署到web應用伺服器上(tomcat5.0),訪問結果如下:
standardclassloader
extclassloader
extclassloader去載入,以上操作完成後下面我們就再次訪問這個servlet
結果出錯了。http500錯誤!
下面我們分析一下出錯原因:當extclassloader載入該serlvet程式的時候,會首先根據類載入器的委派機制交給它的父親(bootstrap)去載入,由於它父親沒有找到該類,所以就又交給它來載入,當他載入這個servlet的時候,他發現我們的這個servlet類extends httpservlet所以它就又去載入httpservlet類,結果確沒有找到,所以就報錯了,因為這個jar包類是由tomcat提供的,因此我們需要拷貝httpservlet類到我們ext目錄下,把tomcat lib中的servlet-api.jar拷貝到ext目錄下面就可以解決這個問題了。
下面是關於分析原因圖:
[img]
乙個類的載入問題題目
如題,如下 輸出結果是什麼?public class classloadtest public class classa public class classb extends classa public intgetsuperfield 輸出結果 100 01com.job.examine.cla...
乙個類中的方法載入順序
package parent public class father static int a 1 public father public void putong static public static void staticmethod private void putong2 public ...
乙個關於JAVA類載入機制的面試題目
class singleton public static singleton getinstance public class test 錯誤答案 count1 1 count2 1 正確答案 count1 1 count2 0 根據本體來分析類載入的過程 1 singleton singleto...