我有一大堆在 OSGi 上运行良好的框架模块,所有服务和组件都可以相互找到并运行良好。
然而,有一个框架可以对类进行一些动态处理。基本上在某些时候你给它一个类名,它执行 Class.forName() 然后反射魔法发生。
这在标准 jvm 中运行并使用 SPI 将框架连接在一起时效果很好,但它在 OSGi 中失败,因为您尝试通过框架接近的随机类“test.MyTest”当然对所述框架不可见。
它将抛出“java.lang.ClassNotFoundException:框架未找到 test.MyTest”
所以我的问题是:如何解决需要查看所有内容的框架缺乏可见性?Import-Package: *
?
更新
假设自 2010 年以来 OSGi 在这方面没有太大变化,文章http://njbartlett.name/2010/08/30/osgi-readiness-loading-classes.html非常有趣。我目前添加了对主动注册类和通过 OSGi 注入的域工厂的支持。
除此之外,默认解析无论如何都使用上下文类加载器,因此如果所有其他方法都失败,则将用于尝试加载类。
更新
我还添加了对建议DynamicImport-Package
的支持,这对于小型项目来说更容易。