我使用Apache Felix创建嵌入式OSGi主机应用程序。我使用以下代码来公开我想要公开的包:
List<String> extra = new ArrayList<>();
extra.add("some.example.packag.to.expose.1");
extra.add("some.example.packag.to.expose.2");
extra.add("some.example.packag.to.expose.3");
config.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, extra.toString().replace("[","").replace("]", ""));
一切都很好,这些包都暴露了。但是,我需要捆绑包才能访问 ALL 主机项目声明的依赖项。因此,例如,父应用程序已声明Jackson,Apache(各种)等,我需要捆绑包才能访问这些。
我尝试显式添加软件包,但是当它们是依赖项时似乎没有做到这一点。因此,例如在捆绑包中我想使用Jacksons com.fasterxml.jackson.core.type.TypeReference;
,所以我将com.fasterxml.jackson.core.type
添加到上面的EXTRA列表中,但它似乎没有解决问题,包仍然没有暴露。
在完美的工作中,我只想让所有主机依赖项都可用,而不必明确说明每一个。
答案 0 :(得分:0)
您必须配置每个包。在OSGi中,您通常会将依赖项安装为bundle。因此,设置不支持批量导出系统包。