簡體   English   中英

如何在OSGI中使用帶有嵌入式.so文件的jar

[英]How to use jar with embedded .so file in OSGI

我正在嘗試創建一個OSGI包,但由於我的一個依賴項而遇到了麻煩。

我正在制作一個應用程序,在Beaglebone Black上執行一些串行IO和GPIO。 對於串口和GPIO,我使用庫libbulldog 該庫的一個jar文件包含.so文件中的本機代碼。

我使用bnd-platform包裝libbulldog庫來從中創建一個OSGI包。

如果我使用這種方法,我在Apache Felix中運行應用程序時遇到異常:

java.lang.ExceptionInInitializerError
    at test.BBB.core.BSSerial.setup_port(BSSerial.java:215)
    at test.BBB.core.BSSerial.<init>(BSSerial.java:28)
    at test.BBB.Activator.start(Activator.java:50)
    at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697)
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:2226)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2144)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.lang.Thread.run(Thread.java:745)
Caused by: io.silverspoon.bulldog.core.platform.IncompatiblePlatformException
    at io.silverspoon.bulldog.core.platform.Platform.createBoard(Unknown Source)
    at test.bs.sys.Setup.<clinit>(Setup.java:22)

在OSGI上下文之外使用庫沒有任何問題,但似乎我需要做一些額外的事情來使.so文件在與OSGI包一起使用時可以訪問?

有問題的依賴jar看起來像這樣:

|-META-INF
|  |- metadata
|
|-io.silverspoon.bulldog.beagleboneblack
|  |- Java code
|
|-lib
   |- bulldog-linux-native.beagleboneblack.so

如何使嵌入的.so文件在OSGI上下文中可用?

您需要將適當的Bundle-NativeCode標頭添加到包含.so和System.loadLibrary調用的包的清單中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM