簡體   English   中英

反射getDeclaredMethods()和不在類路徑中的類

[英]Reflection getDeclaredMethods() and class that is not in classpath

我正在使用反射來獲取特定類的所有方法。

此類引用的類不在我的類路徑中,因此出現異常:

java.lang.NoClassDefFoundError:

在此:

Method methods[] = theClass.getDeclaredMethods();

是否有可能以某種方式“跳過”類路徑以外的所有內容?

無論是否在類路徑中,Class.forName()都不會加載該類。 它將僅返回已加載的類的句柄。

類可以通過以下兩種主要方式之一進行加載:

1.)該類在import語句中被引用(java.lang。*是自動導入的,因此java.lang包中的每個類都是從一開始就加載類的)

2)使用來自ClassLoader的調用來加載類,在這種情況下,其所有依賴項都將被解析。 並加載

因此,如果您嘗試在類路徑之外加載類,或者在類路徑之外加載依賴項,則需要對ClassLoader進行子類化,並告訴它如何加載類及其依賴項。

請參閱此處的ClassLoader規范: http : //docs.oracle.com/javase/1.4.2/docs/api/java/lang/ClassLoader.html

另外,還有現成的ClassLoader子類可以完成您想要的事情,例如URL ClassLoader,它使您可以簡單地將ClassLoader實例指向路徑,並在該路徑中加載任何類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM