我在Eclipse中创建了一个Bundle,并将“启动框架”链接用于“概述”选项卡。我已经在捆绑包中创建了一个接口(interface)(TestService),并且应该为它生成一个代理的代码(在Helper中)。我在捆绑软件的激活器中调用此代码,并获得:

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是公共(public)的,并且与生成异常的Helper在同一包和Bundle中。显然,仅执行“ClassPool.getDefault()”是不够的。那么,我该怎么做才能让ClassPool看到Bundle中的类?我必须导入自己的软件包吗?

最佳答案

我在某些OSGi捆绑软件中使用javassist来即时修改/生成Java类。您可以只看here。希望对您有帮助。

10-04 23:36