Smajl:
私は、ネイティブライブラリをロードするシンプルな春のブートプロジェクトを持っています。問題は、私は、アプリケーションを実行するときにネイティブライブラリへのパスを指定する方法が分からないということです。
私は設定方法を説明する記事のトン読んだことjava.library.path
になく、ひとつひとつの1点のリードを
java.lang.UnsatisfiedLinkError: /path/to/lib/libconnector.so: libconnector.so: cannot open shared object file: No such file or directory
私は、コマンドラインから順に次の2つのコマンドを実行するとプロジェクトが動作します。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/lib
./gradlew bootRun
ライブラリがロードされ、機能しています。しかし、私は私のGradleファイル内のライブラリパスを指定することができません。私は試した
run {
systemProperty 'java.library.path', file('/path/to/lib')
}
bootRun {
systemProperty 'java.library.path', file('/path/to/lib')
}
そして、すべてはこののバリエーションをソートします。また、私のIDEなど何もない作品にVMの引数を追加してみました。誰かが私が間違って何をやって説明してもらえますか?
これは私が(にあるネイティブライブラリをロードする方法です$projectRoot/lib
):
static {
// load connector library
File lib = new File("lib/" + System.mapLibraryName("connector"));
System.load(lib.getAbsolutePath());
}
Smajl:
私は最終的に私の問題を解決しました。私が合格しなければならないLD_LIBRARY_PATH
環境変数としての代わりに、java.library.path
アプリケーションを実行しているときにシステムプロパティとして。
次のGradle変更は私の問題を解決しました:
tasks.withType(JavaExec) {
environment('LD_LIBRARY_PATH', 'lib')
}