1
|
Ralph java.is.for.desktop · 技术社区 · 15 年前 |
![]() |
1
5
这通常是无法解决的。类加载器不需要能够遍历它可以加载的类。类加载器最简单的例子
不能
当您从
更好的实现方法是使用
|
![]() |
2
0
这显然不是很简单就能解决的。 但是,也有解决办法,就像在这篇文章中提到的 Javaworld article 。 一般来说,它包括从类路径探索所有元素。如果它们是jar文件,请浏览它们以查找类,加载这些类并查看它们是否扩展了引用基类。 不过,我强烈建议您使用更“成熟”的机制,比如ioc或插件架构。 很明显我在想 JSPF ,作为一个例子。 |
![]() |
3
0
如果您真的需要这样做,唯一真正的方法是遍历类路径,扫描jar和目录中的类文件,加载该类并查看它的父类。 注意,有些类将具有静态初始化代码,这些代码可能会有不良的副作用,例如,从运行时加载x11类可能会挂起很长时间。如果可能,尝试限制加载到特定包的类,例如com.company(当然,您可以通过类文件相对于类路径项的根的路径来标识包)。 [注意joachim sauer建议的serviceloader,或者提供类似机制的框架是更好的解决方案] |
![]() |
Raphael · 确定未能加载的类文件的路径 6 年前 |
![]() |
Guest · 常量池和方法区域的映射 7 年前 |
![]() |
flow2k · 解析扩展了接口并结束了一个潜在的无限循环 7 年前 |
|
Pneumono · 在运行时更改系统类加载器 8 年前 |
![]() |
user3250354 · 使用Java类加载器获取堆栈跟踪 9 年前 |
![]() |
DoNuT · 通过Classloader加载Maven工件 9 年前 |