【问题标题】:How to load/get all classes in a package using OSGi?如何使用 OSGi 加载/获取包中的所有类?
【发布时间】:2020-03-30 16:41:18
【问题描述】:

我想在一个包中加载所有类,有没有人知道如何在没有任何第三方库的情况下做到这一点?

例如, 在com.example.test包中,有类:A.java、B.java、C.java、D.java、E.java等。

有没有办法在 OSGi 激活时加载 com.example.test 中的所有类?

【问题讨论】:

    标签: java osgi


    【解决方案1】:

    您可以使用Bundle.findEntries() 遍历条目。请记住,Java 类com.example.A 有一个路径com/example/A.class

    除了 fragmentsbundle 类路径 之外,这大部分时间都有效。可以怀疑这两种想法的合理性,但可悲的故事是它们被使用了。片段是将类加载器链接到主机包的其他包。因此,您必须找出碎片并遍历它们。

    Bundle-ClasPath 是一个标头。它列出了捆绑包中应放置在捆绑包的类路径中的一组资源。你也必须遍历它们。

    如果你可以自己控制想要遍历的bundle,那么就不要使用fragments,也不要使用Bundle-ClassPath。无论如何,这通常是一个好主意,这些概念几乎从来都不是关键的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2015-03-06
      • 2013-01-11
      • 1970-01-01
      • 2016-08-09
      相关资源
      最近更新 更多