静的ライブラリをJavaから呼び出す方法について教えていただきたいです。
拡張子はオブジェクトファイルがアーカイブされた(.a)です。
JNIを利用しています。
public class MyClass { static { System.loadLibrary("MyLibrary"); } }
として、java
コマンドにjava.library.pathを指定して読み込もうと致しましたが、UnsatisfiedLinkError
となります。libMyLibrary.a
ではなく、libMyLibrary.so
の共有ライブラリしか認識していないように思えます。
共有ライブラリではなく、静的ライブラリを読み込む方法はあるでしょうか。
追記
言葉足らずな点があり申し訳ございません。回答して下さった方に対する返信と全く同様の追記を致しました。
Java8では静的ライブラリを読み込める仕様になったという記述がございました。これについてですが、
java -version によって以下のように表示されます。
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
http://qiita.com/ayihis@github/items/01f95d5d465168043ae3 の記述を見る限りだと、Java8のバージョンの条件を見たしていると思われます。
StackOverflowの2番目の解答の返信に、System.loadLibrary()を使うだけで動くのか?と言った趣旨のコメントが付いていますが、それに対して、JVMを使えと言った趣旨のコメントがなされているかと思います。
言葉足らずで申し訳ありませんでしたが、具体的に言えばJVMを使う方法が分かりません。
また、他によりよい方法があれば、そちらの方法でも構いません。
ただ、
http://stackoverflow.com/questions/29126376/how-to-link-and-load-a-static-library-ed25519-in-jdk8
と似た状況かと思いますが、shared objectは使えない状況にいます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/24 14:26
2017/01/24 15:14
2017/01/24 15:40
2017/01/24 17:50 編集
2017/01/27 16:42