我有一个 Eclipse 插件,它是 C++ 库的 Java 包装器。我在 Linux 上运行,因此包装器提供了一个 .jar 和一个 .so。我从后一个现有的 JAR 存档创建了一个插件项目。我已经指出了 .so 在 jar 的本机库位置中。
我有另一个引用这个包装器插件的插件。我可以从这个其他插件成功地运行一个独立的 java 应用程序,该插件成功地利用了包装器插件。使用它的类必须从包装器 jar 中导入 java 类,并且在从包装器库中实例化任何内容之前,我必须调用 System.loadLibrary。这意味着我已经正确设置了本机库位置,等等。
当我尝试使用产品定义在 OSGi 上下文中执行相同类型的操作时,我得到一个 java.lang.UnsatisfiedLinkError。如果我编辑要添加的产品定义的运行配置-Djava.library.path=<full path to the .so>
,我就可以再次运行——即,库功能正常。
如何将此路径添加到插件配置中?我是否必须从我的 Activator 类中的 BundleContext 创建一个 ClassLoader,或者是否有插件配置方法可以做到这一点?
我认为通过将 .so 的路径添加到我的包装器插件的 MANIFEST.MF 中的运行时类路径中,我做了正确的事情,但这似乎并没有这样做——我想这只是为了类路径——不是库路径。设想。
有任何想法吗?