在Eclipse上使用Maven构建OSGI插件包(具有传递依赖项)

时间:2019-02-08 05:40:57

标签: maven-plugin osgi-bundle

我正在使用OSGI框架运行一个应用程序并在eclipse上运行配置。我正在开发一个插件来添加到主应用程序中。但是,插件包具有大量传递依赖项,其中一些是OSGI包,而有些则不是。但是,看起来OSGI框架希望所有依赖项都是OSGI捆绑包。 将所有第三方传递依赖项转换为OSGI捆绑包是巨大的痛苦。 我试图使用maven-shade-plugin将所有可传递依赖的jar嵌入到该插件的一个单独的OSGI捆绑包中,但是它不起作用。在加载传递依赖项时,OSGI捆绑程序加载器会一直在寻找OSGI捆绑程序。

我看到阴影处理发生时,swrlapi.jar嵌入在插件包中。 [INFO] Including edu.stanford.swrl:swrl-api.2.0.6.jar在阴影罐子中

但是,当我启动应用程序并切换到调用插件代码的选项卡时;我收到以下错误 用于:

java.lang.ClassNotFoundException: org.swrlapi.factory.SWRLAPIFactory cannot be found by HTA-Basic_1.0.0.SNAPSHOT
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:511) ~[na:na]
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) ~[na:na]
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:414) ~[na:na]
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:153) ~[na:na]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_181]

请帮助。

0 个答案:

没有答案