我正在使用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]
请帮助。