Voglio usare JNI su Ubuntu 8.10, usando Eclipse e gcc (quello standard con Ubuntu se ci sono aromi).Come caricare le librerie native per JNI per evitare un UnsatisfiedLinkError?
Non riesco a caricare la mia libreria nonostante il file make lo abbia creato correttamente.
La classe Java principale è la seguente:
class Hello {
public native void sayHello();
static {
System.loadLibrary("hello.so");
}
public static void main(String[] args) {
Hello h = new Hello();
h.sayHello();
}
}
mio make file è in quanto tale;
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
Il resto del codice (ciao.c) si presenta come si potrebbe pensare.
L'errore che sto ottenendo è il seguente;
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello.so in java.library.path
Se uso un percorso esplicito:
System.loadLibrary("/home/gavin/Work/workspace/JNI/hello.so");
allora funziona, ma mi piacerebbe molto meglio non utilizzare un percorso esplicito, se possibile.
Grazie mille per l'aiuto, i tuoi suggerimenti sono stati tutti corretti, la mia mancanza di la reputazione mi impedisce di notarli tutti come utili. Cheers – gav
si prega di seguire questo link per maggiori dettagli http://saurabhsharma123k.blogspot.in/2017/07/java-jni-and-cc-from-command-line.html –