MrM*_*Mas 4 java eclipse osgi eclipse-plugin
我有一个Eclipse插件,它是C++库的Java包装器.我在Linux上运行,因此包装器提供.jar和.so.我从后一个现有的JAR存档创建了一个插件项目.我已经指向jar的本地库位置中的.so.
我有另一个插件引用这个包装器插件.我可以从另一个成功运行包装器插件的插件中成功运行一个独立的java应用程序.使用它的类必须从包装器jar中导入java类,并且在从包装器库实例化任何内容之前,我必须调用System.loadLibrary.这意味着我已正确设置本机库位置,等等.
当我尝试使用产品定义在OSGi上下文中执行相同类型的操作时,我得到一个java.lang.UnsatisfiedLinkError.如果我编辑要添加的产品定义的运行配置-Djava.library.path=<full path to the .so>,我再次能够运行 - 即库正常运行.
如何将此路径添加到插件配置中?我是否必须从我的Activator类内部的BundleContext创建一个ClassLoader,或者是否有插件配置方法来执行此操作?
我认为我有正确的做法是将.so的路径添加到我的包装器插件的MANIFEST.MF中的运行时类路径但是似乎没有这样做 - 我想这只是针对类路径 - 而不是图书馆的路径.设想.
有任何想法吗?
我在我的项目中做了类似的事情.
在我依赖本机代码的插件中,我在插件的根目录下有一个名为os的文件夹,其中包含以下内容:
os
-linux
-x86
-<libname>.so
-win32
-x86
-<libname>.dll
-x86_64
-<libname>.dll
Run Code Online (Sandbox Code Playgroud)
build.properties指定(除其他外)os文件夹应作为插件构建过程的一部分打包:
bin.includes = META-INF/,\
plugin.xml,\
lib/,\
os/,\
.,\
schema/
Run Code Online (Sandbox Code Playgroud)
当使用插件的产品在其中一个提供本机库的平台下运行时,Java System.loadLibrary("libname")调用将正确解析库.
这一切都在基于Eclipse 3.6.2的RCP应用程序中成功使用.但是,我找不到任何引用这种方法的引用,所以我想知道它是否已经退役,支持更多OSGi友好的方法,使用Bundle-NativeCode指令,我发现了几个引用:
| 归档时间: |
|
| 查看次数: |
4965 次 |
| 最近记录: |