Я видел этот вопрос здесь, пробовал предлагаемые исправления, но пока мне это не удалось. У меня есть некоторый опыт работы с Java, но JNI давно, никогда не делал этого в Linux, хотя ...
Я пытаюсь запустить простое приложение HelloWorld JNI в Linux.
Небольшой Java-файл:
class HelloWorld {
private native void print();
public static void main(String[] args){
new HelloWorld().print();
}
static {
System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("HelloWorld");
}
}
Маленький файл C:
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}
скомпилировал файл C:
gcc -shared -Wall -fPIC HelloWorld.c -I/usr/lib/gcc/x86_64-redhat-linux/3.4.3/include/ -o libHelloWorld.so
Запустите приложение по:
java HelloWorld
или
java -Djava.library.path=/home/nxp40954/jnitesting/. HelloWorld
Но ничего хорошего, получая:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/nxp40954/jnitesting/libHelloWorld.so: /home/nxp40954/jnitesting/libHelloWorld.so: cannot open shared object file: No such file or directory
Странно, потому что на самом деле есть файл /home/nxp40954/jnitesting/libHelloWorld.so
.
У кого-нибудь есть подсказка?