Java JNI Spring Boot

Spring Boot の Runnable jar に JNI のライブラリも組み込む件

投稿日:

IntelliJ のプロジェクトの src/main/resources の下に libs というディレクトリを作成し、そこに JNI で使用するライブラリ mokyu.so を置きます。

それを IntelliJ 上での起動とデバッグで使用し、同時に Spring Boot で Runnable jar としてビルドした jar ファイルの中に組み込んでも使用できるようにしようとしたところ、これがなかなか難儀で。

さてどうしたものか・・・と困って調べていたところ Stack Overflow に有益な情報が。

How to bundle a native library and a JNI library inside a JAR?
http://stackoverflow.com/questions/2937406/how-to-bundle-a-native-library-and-a-jni-library-inside-a-jar

ここで紹介されていたブログに解がありました。

How to Load Native JNI Library from JAR
https://www.adamheinrich.com/blog/2012/12/how-to-load-native-jni-library-from-jar/

しかもその内容をきちんとライセンスを明記した上で GitHub で公開されています。素晴らしい。

Native Utils
https://github.com/adamheinrich/native-utils

実際、こんな風に使用しています。

import cz.adamh.utils.NativeUtils;

...

public class NativeDVBIO extends DVBInputStream {

  static {
    try {
      NativeUtils.loadLibraryFromJar("/libs/" + System.mapLibraryName("NativeDVBIO"));
    } catch (IOException e) {
      //
    }
  }

...

-Java, JNI, Spring Boot

Copyright© hirooka.pro , 2013-2018 All Rights Reserved.