自定义ClassLoader可以加载一个忽略它的依赖关系的类吗?

时间:2013-08-23 06:21:33

标签: java dependencies classloader

我有一个我想要加载的二进制类,但我没有它的依赖项。 我仍然想加载它,以获得它的合格名称。

我明白我无法将其用于其他任何事情(这没关系),我只需要合格的名字。

有没有办法用自定义类加载器来做到这一点?

谢谢,

1 个答案:

答案 0 :(得分:1)

至于严格回答问题:请参阅JVM规范中的section on symbolic references resolution。简而言之:关于何时执行分辨率的保证很少。我不确定当前实现的精确行为是什么,但如果你采用这种方式,解决方案将不会完全可靠,即使它可能会有效。

但是你说你只需要它的合格名称。这是一个不同的故事,事实上,这很容易。 JVM规范详细描述了format of the class file。由于您拥有二进制文件,因此可以直接从数据中提取它,完全绕过JVM的类加载机制。如果您不想手动完成,请使用适当的工具 - ASM,以及其精彩,详细的文档。一些替代方案是BCELjavassistCGLIB(不再维护)。