• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JNIでロードするライブラリが見つからない)

JNIでロードするライブラリが見つからない

このQ&Aのポイント
  • JNIを使ってライブラリを呼び出す際に、ライブラリが見つからないエラーが出ています。
  • JavaのコードとCのコードを正しく設定してコンパイル・実行しているにも関わらず、ライブラリが見つからないエラーが発生しています。
  • LD_LIBRARY_PATHの環境変数を設定しても解決せず、HelloWorldJNIlibがjava.library.path内に存在しないため、ライブラリが見つからないというエラーメッセージが表示されています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

JNIは門外漢なのですが。 http://www.hellohiro.com/native.htm ↑のサイトを参照すると「Linuxの場合はダイナミックリンクライブラリのファイルの名前の先頭にlibとつけなければなりません。」 という記述があります。 [*****@**** jnitest]$ gcc -fPIC -shared -I/usr/lib/jvm/java-1.6.0/include/ -I/usr/ lib/jvm/java-1.6.0/include/linux/ HelloWorldJNI.c -o HelloWorldJNIlib.so ↑コマンドのHelloWorldJNIlib.soの部分をlibHelloWorldJNI.so にしてみてはいかがでしょうか?

higedansya
質問者

お礼

ご回答ありがとうございました. すみません,そのページを参考にしていたのにlibの件見落としていました... ファイル名をlibで始まるように変更したところうまくいきました. Javaで呼ぶ方では「lib」付けなくていいんですね. [****@***** jnitest]$ vi HelloWorldJNI.java public class HelloWorldJNI { static { System.loadLibrary("HelloWorldJNI"); } public native void sayHelloWorld(); public static void main(String[] args) { HelloWorldJNI hello = new HelloWorldJNI(); hello.sayHelloWorld(); } } [****@***** jnitest]$ gcc -fPIC -shared -I/usr/lib/jvm/java-1.6.0/include/ -I/usr/ lib/jvm/java-1.6.0/include/linux/ HelloWorldJNI.c -o libHelloWorldJNI.so [****@***** jnitest]$ ls HelloWorldJNI.c HelloWorldJNI.h libHelloWorldJNI.so HelloWorldJNI.class HelloWorldJNI.java

関連するQ&A