使用Javassist编译的类的类路径

时间:2010-08-18 14:56:25

标签: java javac bytecode java-compiler-api javassist

正如标题所示,使用Javassist编译的类的类路径是什么?

我的场景是:A类是用Javassist编译的。 B类使用Java Compiler API编译并引用A类。问题是A类对B类不可见......

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

B类的“类路径”不依赖于如何编译类(例如,创建类文件),而是如何加载类。

Java使用类的类加载器来查找此类引用的所有类。

每个类加载器都可以有一个父类加载器,通常loader.loadClass首先向其父类加载器询问任何类,如果失败则尝试加载类本身。

因此,只需确保{B}类加载器可以看到A类,这意味着A的类加载器必须是父类(或父类的父类,或者......) )类B的类加载器。