【发布时间】:2020-03-30 16:41:18
【问题描述】:
我想在一个包中加载所有类,有没有人知道如何在没有任何第三方库的情况下做到这一点?
例如, 在com.example.test包中,有类:A.java、B.java、C.java、D.java、E.java等。
有没有办法在 OSGi 激活时加载 com.example.test 中的所有类?
【问题讨论】:
我想在一个包中加载所有类,有没有人知道如何在没有任何第三方库的情况下做到这一点?
例如, 在com.example.test包中,有类:A.java、B.java、C.java、D.java、E.java等。
有没有办法在 OSGi 激活时加载 com.example.test 中的所有类?
【问题讨论】:
您可以使用Bundle.findEntries() 遍历条目。请记住,Java 类com.example.A 有一个路径com/example/A.class。
除了 fragments 和 bundle 类路径 之外,这大部分时间都有效。可以怀疑这两种想法的合理性,但可悲的故事是它们被使用了。片段是将类加载器链接到主机包的其他包。因此,您必须找出碎片并遍历它们。
Bundle-ClasPath 是一个标头。它列出了捆绑包中应放置在捆绑包的类路径中的一组资源。你也必须遍历它们。
如果你可以自己控制想要遍历的bundle,那么就不要使用fragments,也不要使用Bundle-ClassPath。无论如何,这通常是一个好主意,这些概念几乎从来都不是关键的。
【讨论】: