[英]How to load/get all classes in a package using OSGi?
我想加載一個包中的所有類,有沒有人知道如何在沒有任何第三方庫的情況下做到這一點?
例如,在包 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
。
除了fragment和bundle classpath之外,這在大多數情況下都有效。 可以懷疑這兩種想法的理智,但可悲的是,它們被使用了。 片段是將類加載器鏈接到主機包的其他包。 因此,您必須找出碎片並遍歷它們。
Bundle-ClasPath 是一個標頭。 它列出了bundle 中應該放置在bundle 類路徑上的一組資源。 你也必須遍歷它們。
如果可以自己控制自己要遍歷的bundle,那么就不要使用fragments,也不要使用Bundle-ClassPath。 無論如何,這通常是一個好主意,但這些概念幾乎從來都不重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.