繁体   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