私はUbuntu 8.10でEclipseとgcc(味がある場合はUbuntuの標準のもの)を使用してJNIを使いたいと思います。UnsatisfiedLinkErrorを避けるためにJNI用のネイティブライブラリをロードするにはどうすればよいですか?
makeファイルを正常に作成したにもかかわらず、ライブラリを読み込めないようです。次のように
メインJavaクラスは次のとおりです。
class Hello {
public native void sayHello();
static {
System.loadLibrary("hello.so");
}
public static void main(String[] args) {
Hello h = new Hello();
h.sayHello();
}
}
私のメイクファイルは、次のようなです。
all : hello.so
hello.so : Hello.o
gcc -shared -o hello.so Hello.o
Hello.o : Hello.c Hello.h
gcc -I/usr/lib/jvm/java-6-sun/include -I/usr/lib/jvm/java-6-sun/include/linux -c Hello.c -o Hello.o
Hello.h : Hello.class
javah -jni Hello
clean :
-del Hello.h
-del Hello.o
残りのコード(Hello.c)は、思うように見えます。
エラーは次のとおりです。
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello.so in java.library.path
私は明示的なパスを使用する場合:
System.loadLibrary("/home/gavin/Work/workspace/JNI/hello.so");
が、それは動作しますが、可能であれば、私はむしろ明示的なパスを使用しないと思いますが。
おかげで、あなたのヒントは、すべての私の不足正しかったです評判は、私がそれらをすべて参考にすることから除外します。 乾杯してください – gav
詳細については、このリンクをご覧くださいhttp://saurabhsharma123k.blogspot.in/2017/07/java-jni-and-cc-from-command-line.html –