![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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ランキング
-
CLASSPATHを設定しても、『Clas...
-
java と javax の違いは?
-
リクエストパラメータを暗号化...
-
javaからデータベースに接続 エ...
-
JNIでロードするライブラリが見...
-
JSFで、マネージビーンに画面の...
-
propertiesが読み込めなくてnul...
-
struts2環境構築で不具合が出て...
-
使用しているJUnitのバージョン...
-
vba クリップボードクリアにつ...
-
gitでバージョン指定してダウン...
-
IISワーカープロセスが原因でCP...
-
VBAの「for i=1 to cells(…」...
-
visual stadio 参照問題
-
reactを利用できるnode.jsのバ...
-
XMLとUMLの相違点?
-
正規表現について質問です。 カ...
-
Javaでの三目並べのソースコード
-
JSPファイルで生じるエラーをど...
-
RHEL6.0上で使用可能なJDKとTomcat
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaでのエラーについて
-
java と javax の違いは?
-
struts2環境構築で不具合が出て...
-
JAVA実行時エラーについて教え...
-
DBから全権検索したデータをjsp...
-
CLASSPATHを設定しても、『Clas...
-
javacのコンパイルでファイルが...
-
JAVAでYYYYMMDDhhmm形式の文字...
-
javaからデータベースに接続 エ...
-
JasperExceptionのエラーログの...
-
-Applet表示でのjava.lang.Clas...
-
[JAVA+CSV]カンマ区切りを分解...
-
マイクラ1.7.10にcutallなどが...
-
javaサーブレット upload時
-
Java コンソールが起動しない
-
jdk-1_5_0_07でのコンパイルエラー
-
Tomcatでエラー
-
$_SERVER['HTTP_USER_AGENT'] ...
-
EclipseのJDBCドライバーについて
-
javaでtcpヘッダを自前で作成す...
おすすめ情報