我在這裏看到了這個問題,嘗試了所提出的修復方法,但迄今爲止還沒有成功。我有相當一些Java的經驗,但JNI很久以前,從來沒有在Linux上做過...Linux上的JNI問題:無法打開共享對象文件
我試圖得到一個簡單的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文件:
java HelloWorld
:
gcc -shared -Wall -fPIC HelloWorld.c -I/usr/lib/gcc/x86_64-redhat-linux/3.4.3/include/ -o libHelloWorld.so
通過運行程序
或
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
文件。
有沒有人有線索?
是的,我知道libs應該走LD_LIBRARY_PATH定義的路徑,「。」也在那裏,甚至通過使用-Djava.library.path =/home/nxp40954/jnitesting我明確地定義了libHelloWorld.so的位置,但我仍然得到這個「沒有這樣的文件或目錄」的錯誤。 – Vlemmix
我編譯了你的代碼,它適用於我。你可以嘗試在一個目錄中完成所有操作,並使用「。」。 ?順便說一句,你用什麼java? Waht OS? –