關於類載入器的乙個應用測試

2021-08-30 14:13:38 字數 687 閱讀 7506

新建乙個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...