classpath – 如何在OSGi Bundle中创建/初始化Javassist ClassPool?

我在Eclipse中创建了一个Bundle,并在“Overview”选项卡中使用了“Launch the Framework”链接.我在我的bundle中创建了一个接口(TestService),以及应该为它生成代理的代码(在Helper中).我在Bundle的Activator中调用此代码,并得到:

Caused by: javassist.NotFoundException: com.test.services.TestService
at javassist.ClassPool.get(ClassPool.java:436)
at com.test.services.Helper.get(Helper.java:46)

它会在第一个ClassPool.get()中抛出:

ClassPool pool = ClassPool.getDefault();
CtClass result = pool.get(TestService.class.getName());
...

TestService是公共的,在同一个包中,而Bundle是Helper,它生成Exception.显然,仅仅执行“ClassPool.getDefault()”并不够好.那么我需要做什么才能使ClassPool看到Bundle中的类?我是否必须导入自己的包裹?

最佳答案
我在一些OSGi包中使用javassist来动态修改/生成Java类.你可以看看here.希望它能帮助你.

转载注明原文:classpath – 如何在OSGi Bundle中创建/初始化Javassist ClassPool? - 代码日志