java類載入器

2021-07-13 02:31:45 字數 2363 閱讀 1179

public

class

classloaderattachment

extends

date

}

編譯後,在bin目錄會生成它的.class檔案,然後在專案目錄(bin的上一層把)建立乙個」temp_folder」目錄,用於生成加密後的.class檔案

寫乙個main函式,把上面的classloaderattachment.class檔案加密

//測試,先將classloaderattachment.class檔案加密寫到工程的class_temp目錄下  

public

static

void

main(string args) throws exception

/**

* 加密和解密演算法

*@param is

*@param os

*@throws exception

*/private

static

void

encodeanddecode(inputstream is,outputstream os) throws exception

}

會在temp_folder目錄下生成乙個新的classloaderattachment.class,此目錄和class檔名用於建立自己的classloader時,作為引數傳入

下面編寫自己的載入類

public

class

myloadclass

extends

classloader

public

myloadclass(string classdir)

@suppresswarnings("deprecation")

@override

protected class> findclass(string name) throws classnotfoundexception catch (exception e)

return

super.findclass(name);

} //測試,先將classloaderattachment.class檔案加密寫到工程的class_temp目錄下

public

static

void

main(string args) throws exception

/**

* 加密和解密演算法

*@param is

*@param os

*@throws exception

*/private

static

void

encodeanddecode(inputstream is,outputstream os) throws exception

} }

其中的main函式就是剛才加密class檔案用的

然後寫測試mydexloader的測試方法:

public class mymain 

system.out

.println(cl);

/** * 如果想自己的類載入,那麼需要把bin目錄下對應的.class檔案刪掉,使父類找不到,這樣自己的載入類才有機會去執行

* **/

class myclass = new myloadclass("temp_folder").loadclass("classloaderattachment");

date mydate = (date)myclass.newinstance();

system.out

.println("classloader is :"+mydate.getclass().getclassloader().getclass().getname());

system.out

.println("date result is "+mydate.tostring());

classloader cll = mydate.getclass().getclassloader();

while(cll != null)

system.out

.println(cll);}}

也是乙個main方法,執行即可;把bin目錄下的classloaderattachment.class刪除後,最後得到的載入類煉表是:

java類載入器

一,類載入器概述 1,bootstrap jre lib rt.jar extclassloader jre lib ext jar 2,父子關係 bootstrap extclassloader 3,通過getparent 得到父親載入器 那麼根得到的是null,因為bootstrap是乙個特殊的...

java類載入器備忘

類載入器 自定義類載入器必須繼承 classloader類,重寫父類的 findclass方法,因為loadclass 方法包含了類載入器的委託機制 所以我們仍然保留父類的 loadclass方法,然後使用 defineclass 將class 檔案通過位元組流載入到記憶體中 因為有委託機制 所以我...

JAVA類載入機制以及如何自定義類載入器

雙親委派機制描述 本文主要以tomcat7為例說明類載入機制,大家也可以參考tomcat7的類載入機制的官方文件。tomcat7總的classloader結構如下圖 各個類載入器載入類的範圍 載入順序預設如下 如果設定了,載入順序如下 jdk的解釋是這樣的 並不是給執行緒設定了contextclas...