Я пытаюсь собрать и запустить пример программы jni. Программа является просто примером программы helloworld. Я не написал это, но я предполагаю, что это работает. Я запускаю это на Linux. Есть четыре файла.
HelloNative.c
HelloNative.h
HelloNative.java
HelloNativeTest.java
Для сборки файлов я сделал
gcc -I/myDir/jdk/include -I/myDir/jdk/include/linux -fPIC -c HelloNative.c
gcc -shared -o HelloNative.so HelloNative.o
java *java
Вот результат сборки
HelloNative.c
HelloNative.h
HelloNative.o
HelloNativeTest.class
HelloNative.class
HelloNative.java
HelloNative.so
HelloNativeTest.java
Тогда я сделал
setenv LD_LIBRARY_PATH /myDir/myExample:${LD_LIBRARY_PATH}
java HelloNativeTest
Я получил следующую ошибку
Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at HelloNative.<clinit>(HelloNative.java:9)
at HelloNativeTest.main(HelloNativeTest.java:8)
Я проверил LD_LIBRARY_PATH
и HelloClassTest
и HelloNative.so
, все они были там. Я также пытался указать -CLASSPATH
, но это не имело значения.
У кого-нибудь есть идеи?