在Linux上使用Bundle-NativeCode不起作用

Mar*_*erg 5 java linux bundle eclipse-plugin shared-libraries

我创建了一个包含以下文件夹结构的插件:

  • SRC
  • 本地/所以/ libsystemcommand.so
  • META-INF/MANIFEST.MF

清单包括命令

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Commands Plug-in
Bundle-SymbolicName: de.system.commands;singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: de.system.commands.CommandsPlugin
Bundle-Localization: plugin
Bundle-NativeCode: native/so/libsystemcommand.so; osname = Linux; processor = x86
Require-Bundle: org.eclipse.core.runtime,
 org.apache.commons.logging
Eclipse-AutoStart: true
Export-Package: de.system.commands,
 de.system.commands.jni,
 de.system.commands.utils
Bundle-ClassPath: .
Run Code Online (Sandbox Code Playgroud)

build.properties看起来像

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               native/
Run Code Online (Sandbox Code Playgroud)

在我Activator班的开始方法中,我打电话

System.loadLibrary("systemcommand");
Run Code Online (Sandbox Code Playgroud)

在运行时,找不到库并抛出UnsatisfiedLinkError.

java.lang.UnsatisfiedLinkError: no libsystemcommand in java.library.path
Run Code Online (Sandbox Code Playgroud)

我是否必须在插件中设置更多属性?我是否必须在目标平台上解压缩一些信息?

编辑:

java.library.path=/opt/jdk/j2re1.4.2_16/lib/i386/client:/opt/jdk/j2re1.4.2_16/lib/i386:/opt/jdk/j2re1.4.2_16/../lib/i386::/opt/dsa/lib:/opt/dsa/lib
Run Code Online (Sandbox Code Playgroud)

Mar*_*erg 1

我想我找到了解决方案。

我们只构建不起作用的插件并将其复制到目标平台目录。此后,无论是否找到该库,我们都会启动应用程序来保存日志文件。

我们错过的是删除配置文件夹。新插件未解压缩,并且配置目录中不存在该库。

很抱歉并感谢您的回答。

编辑 :

配置文件夹位于

<installation>/eclipse/configuration/
Run Code Online (Sandbox Code Playgroud)

至少删除所有没有文件的东西

<installation>/eclipse/configuration/config.ini
Run Code Online (Sandbox Code Playgroud)