2010-08-18 43 views
2

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

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

任何想法?

+0

我不确定您的意思是“不可见” – MatrixFrog 2011-07-20 01:56:18

+0

Javassist编译的类是在运行时生成的还是生成一个写回磁盘的类文件? – prunge 2011-07-20 02:18:17

回答

0

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

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

每个类加载器都可以有父类加载器,并且通常loader.loadClass首先会向其父类加载器请求任何类,并在失败时尝试加载类本身。因此,只要确保A类对类B的类加载器可见即意味着A的类加载器必须是类的类加载器的父类(或父类的父类或...) B