我有一些主要處理接口的bundle,它使用第三方jar中的工廠來獲取它正在使用的接口的實例。 例如,Apache Karaf中的強制導入
我-bundle.jar有...
com.oth.itf.Intrface itf = Fctry.getInstance('ABC');
有
imports-package for com.oth.itf
第三party.jar有..
public static com.oth.itf.Intrface getInstance(String abc) {
if (...) {
return new com.oth.impl.ItfInstance();
}
}
有exports-package for com.oth.itf and com.oth.impl
一切工作正常和捆綁也得到部署,但問題是,我得到
的ClassNotFoundException爲ItfInstance
上
我 - 捆綁
代碼被執行時3210
。
我試着爲com.oth.impl添加import-package,但無濟於事。事情開始工作時,我在-bundle.jar添加com.oth.impl.ItfInstance
一些其中
假聲明。看起來,卡拉夫只有在明確使用它們的情況下才能獲得進口產品。有沒有更好的辦法?即使我們沒有明確地使用它們,是否有辦法強制Karaf導入包裹?
不,這不是如何進口OSGi工作。導入是導入,沒有「強制」選項。由於沒有張貼清單,因此無法分辨您的示例中發生了什麼問題。 –
嗯,我沒有示例,但我可以告訴你,pom.xml具有特定包的import-package,但清單並不是因爲該包未明確用於代碼中。 –
如果清單沒有導入包,那麼包不會被導入。期。清單如何以這種方式結束?誰知道。這是一個構建問題,所以你必須提供構建系統的細節。 –