Я хочу использовать JNI в Ubuntu 8.10, используя Eclipse и gcc (стандартный с Ubuntu, если есть варианты).
Я не могу загрузить свою библиотеку, несмотря на то, что 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();
}
}
Мой make-файл как таковой;
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");
Тогда это работает, но я бы предпочел не использовать явный путь, если это возможно.