2016-05-03 9 views
1

に埋め込まの.soファイルとjarファイルを使用する方法。私はOSGiバンドルを作成しようとしていますが、トラブルに私の依存関係のための1を実行していますOSGI

私はBeagleboneブラックにいくつかのシリアルIOとGPIOのものを行うアプリケーションを作っています。シリアルとGPIOのために私は図書館libbulldogを使用しています。ライブラリのjarファイルの一つが.soのファイルにネイティブコードが含まれています。

私はそれからOSGiバンドルを作るためにBND-プラットフォームを使用してlibbulldogライブラリをラップします。

私はこのアプローチを使用する場合はApacheフェリックスでアプリケーションの実行をしようとしたとき、私は例外を取得:

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コンテキストの外では何の問題も与えていないが、私が何かをする必要がありそうですOSGiバンドルで使用する場合の.soファイルにアクセスできるようにするために余分な?

問題の依存関係のjarファイルは、次のようになりますOSGIコンテキストで使用可能な組み込みの.soファイルを作成する

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

何をすべきか?

答えて

0

適切なBundle-NativeCodeヘッダーを、.soおよびSystem.loadLibrary呼び出しを含むバンドルのマニフェストに追加する必要があります。

関連する問題