0

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

我知道我不能将它用于其他任何事情(没关系),我只需要限定名称。

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

谢谢,

4

1 回答 1

1

至于严格回答这个问题:请参阅JVM 规范中有关符号引用解析的部分。简而言之:几乎不能保证何时执行解析。我不确定当前实现的确切行为是什么,但如果你这样做,解决方案将不会完全可靠,即使它可能会起作用。

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

于 2013-08-28T16:25:18.703 回答