簡體   English   中英

如何使用 OSGi 加載/獲取包中的所有類?

[英]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

除了fragmentbundle classpath之外,這在大多數情況下都有效。 可以懷疑這兩種想法的理智,但可悲的是,它們被使用了。 片段是將類加載器鏈接到主機包的其他包。 因此,您必須找出碎片並遍歷它們。

Bundle-ClasPath 是一個標頭。 它列出了bundle 中應該放置在bundle 類路徑上的一組資源。 你也必須遍歷它們。

如果可以自己控制自己要遍歷的bundle,那么就不要使用fragments,也不要使用Bundle-ClassPath。 無論如何,這通常是一個好主意,但這些概念幾乎從來都不重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM