Я пытаюсь создать и запустить пример jni-программы. Программа - всего лишь образец программы helloworld. Я не писал это, но я предполагаю, что он работает. Я запускаю это в Linux. Есть четыре файла.Ошибка выполнения Java с JNI
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
, но это, похоже, не имело значения. У кого-нибудь есть идеи?
Прежде всего, вы не должны иметь файлы C имеют такое же имя, что и файлы Java. Там –
Файлы были из учебного пакета. Я не изменял и не переименовал их. Я предполагаю, что они работают так, как есть. Я мог бы попытаться изменить и переименовать их.Вы уверены, что это проблема? – tadpole
Это может быть хорошей идеей рассказать людям, где они могут загрузить образец, чтобы они могли попробовать. Также вы вообще что-то модифицировали из образца? –