Java OSGI Bundle NativeCode给出错误“;未找到本机代码的匹配项“;

Java OSGI Bundle NativeCode给出错误“;未找到本机代码的匹配项“;,java,maven,osgi,bundle,manifest,Java,Maven,Osgi,Bundle,Manifest,我正在开发一个OSGI包,它使用本机库librxtxSerial。 第一次,我不得不在树莓上部署这个包,所以我做了类似的事情: - lib - x86 - librxtxSerial.so - arm - librxtxSerial.so 我将本机库放在:lib/librxtxSerial.so下(注意:在java项目中) 然后,在我写的清单中: Bundle-NativeCode: lib/librxtxSerial.so 一切正常 现在的问题是,我必须在

我正在开发一个OSGI包,它使用本机库librxtxSerial。 第一次,我不得不在树莓上部署这个包,所以我做了类似的事情:

 - lib
   - x86
     - librxtxSerial.so
   - arm
     - librxtxSerial.so
我将本机库放在:lib/librxtxSerial.so下(注意:在java项目中)

然后,在我写的清单中:

Bundle-NativeCode: lib/librxtxSerial.so
一切正常

现在的问题是,我必须在其他使用不同处理器架构(x86而不是ARM)的嵌入式设备上部署相同的捆绑包

因此,我下载了librxtxSerial库的x86版本,并修改了文件夹结构,如下所示:

 - lib
   - x86
     - librxtxSerial.so
   - arm
     - librxtxSerial.so
我以这种方式修改了我的清单:

Bundle-NativeCode: lib/x86/librxtxSerial;processor=x86, lib/arm/librxtxSerial;processor=ARM_le
尝试编译(通过maven tycho插件)时,我总是会遇到相同的错误:

No match found for native code: lib/x86/librxtxSerial; processor=x86, lib/arm/librxtxSerial; processor=ARM_le

我该怎么解决这个问题呢?

好的,我已经解决了。不确定原因,但为了解决此问题,在标题末尾添加“*”就足够了,因此:

Bundle-NativeCode: lib/x86/librxtxSerial;processor=x86, lib/arm/librxtxSerial;processor=ARM_le, *

现在可以了。

好的,我已经解决了。不确定原因,但为了解决此问题,在标题末尾添加“*”就足够了,因此:

Bundle-NativeCode: lib/x86/librxtxSerial;processor=x86, lib/arm/librxtxSerial;processor=ARM_le, *

它现在可以工作。

IIUC,*表示即使所有子句都不匹配,捆绑包仍将解析。它可能是在消除症状,而不是根本问题。要尝试的一件事是:在每个体系结构上,检查正在运行的应用程序中的系统属性
osgi.arch
的值。它是否与您为上面的
处理器
指定的值匹配?IIUC,*表示即使没有匹配的子句,捆绑包仍将解析。它可能是在消除症状,而不是根本问题。要尝试的一件事是:在每个体系结构上,检查正在运行的应用程序中的系统属性
osgi.arch
的值。它是否与上面为
处理器
指定的值匹配?为什么要使用Tycho插件?为什么要使用Tycho插件?