JNIを使ってライブラリを呼び出すとき,
Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloWorldJNIlib in java.library.path
というようにライブラリが見つからないエラーが出て困っています.
【Javaのコード】
[*****@**** jnitest]$ vi HelloWorldJNI.java
public class HelloWorldJNI {
static {
System.loadLibrary("HelloWorldJNIlib");
}
public native void sayHelloWorld();
public static void main(String[] args) {
HelloWorldJNI hello = new HelloWorldJNI();
hello.sayHelloWorld();
}
}
【Cのコード】
[*****@**** jnitest]$ vi HelloWorldJNI.c
#include "HelloWorldJNI.h"
JNIEXPORT void JNICALL
Java_HelloWorldJNI_sayHelloWorld (JNIEnv *env,
jobject obj ) {
printf("Hello World");
}
【手順】
[*****@**** jnitest]$ javac HelloWorldJNI.java
[*****@**** jnitest]$ ls
HelloWorldJNI.c HelloWorldJNI.class HelloWorldJNI.java
[*****@**** jnitest]$ javah HelloWorldJNI
[*****@**** jnitest]$ ls
HelloWorldJNI.c HelloWorldJNI.class HelloWorldJNI.h HelloWorldJNI.java
[*****@**** 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
[*****@**** jnitest]$ ls
HelloWorldJNI.c HelloWorldJNI.h HelloWorldJNIlib.so
HelloWorldJNI.class HelloWorldJNI.java
[*****@**** jnitest]$ export LD_LIBRARY_PATH=.
[*****@**** jnitest]$ java HelloWorldJNI
Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloWorldJNIlib in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1698)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at HelloWorldJNI.<clinit>(HelloWorldJNI.java:3)
[*****@**** jnitest]$ java -Djava.library.path=. HelloWorldJNI
Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloWorldJNIlib in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1698)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at HelloWorldJNI.<clinit>(HelloWorldJNI.java:3)
[*****@**** jnitest]$
何を見直すべきかおわかりの方いらっしゃいませんでしょうか.
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
にしてみてはいかがでしょうか?
ご回答ありがとうございました.
すみません,そのページを参考にしていたのに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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java mac mini 2009 でのmac OS における Java の入れ替えについて 1 2022/12/27 19:23
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- ゲーム Ps5で、マイクラJava版って出来ますか?今マイクラ統合版でやってて、マイクラJava版もやってみ 1 2023/02/07 20:25
- Java jdk17.06のインストーラーが起動しない 1 2023/03/27 21:58
- C言語・C++・C# C#の基本文法が詳しく書かれている教科書的な本ありますか 2 2023/02/11 03:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaでのエラーについて
-
java と javax の違いは?
-
CLASSPATHを設定しても、『Clas...
-
vba クリップボードクリアにつ...
-
JSPファイルで生じるエラーをど...
-
Pythonを無料(安価)で学ぶ方...
-
gitでバージョン指定してダウン...
-
IISワーカープロセスが原因でCP...
-
Window CE でJava appletは使え...
-
エクリプスのプログラミングに...
-
EclipseとVisual StudioをPC1台...
-
文字列に半角スペースがあるか...
-
プログラムの起動、利用につい...
-
MSFormsとは何ですか?
-
javaでの#if 0 #endif文
-
Webアプリケーションを開発する...
-
MSCOMCTL.OCXのアップデートの方法
-
サイドワインダーのドライバ
-
SQLでデータベースから返ったデ...
-
UnknownHostException
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaでのエラーについて
-
java と javax の違いは?
-
propertiesが読み込めなくてnul...
-
javacのコンパイルでファイルが...
-
JAVA実行時エラーについて教え...
-
javaからデータベースに接続 エ...
-
CLASSPATHを設定しても、『Clas...
-
struts2環境構築で不具合が出て...
-
Tomcatでエラー
-
マイクラ1.7.10にcutallなどが...
-
javaのGUIツールキット
-
log4jを使用し、JAVAのバッチプ...
-
マイクラ Ender IO 入れたらク...
-
-Applet表示でのjava.lang.Clas...
-
javaサーブレット upload時
-
JavaMail関係でエラーが出ます
-
JasperExceptionのエラーログの...
-
AntでのJunitの試験
-
マイクラがクラッシュします。
-
Tomcat上で動くサーブレットが...
おすすめ情報