我有一个要加载的二进制类,但我没有它的依赖项。我仍然想加载它,以获得它的限定名称。
我知道我不能将它用于其他任何事情(没关系),我只需要限定名称。
那么有没有办法使用自定义类加载器来做到这一点?
谢谢,
我有一个要加载的二进制类,但我没有它的依赖项。我仍然想加载它,以获得它的限定名称。
我知道我不能将它用于其他任何事情(没关系),我只需要限定名称。
那么有没有办法使用自定义类加载器来做到这一点?
谢谢,
至于严格回答这个问题:请参阅JVM 规范中有关符号引用解析的部分。简而言之:几乎不能保证何时执行解析。我不确定当前实现的确切行为是什么,但如果你这样做,解决方案将不会完全可靠,即使它可能会起作用。
不过,您说您只需要它的限定名称。这是一个不同的故事,这很容易,事实上。JVM 规范详细描述了类文件的格式。由于您拥有二进制文件,因此您可以直接从数据中提取它,完全绕过 JVM 的类加载机制。如果您不想手工操作,请使用适当的工具 -想到ASM ,它具有精彩、详细的文档。一些替代方案是BCEL、javassist和CGLIB(不再维护)。