JNI不满意链接错误?
我正在练习JNI并创建了共享库文件Samplelib.so。 我将创建库文件的目录添加到java.library.path中,当我运行java文件时,我得到了java.lang.UnsatisfiedLinkError。 这是我的Sample.java。
import java.util.*; public class Sample{ public native int intmethod(int n); public native String stringmethod(String s); public static void main(String[] args) { try{ //System.setProperty( "java.library.path", "/home/sudhagar/Project" ); System.load("libSample"); Sample sample=new Sample(); int sq=sample.intmethod(2); String text=sample.stringmethod("JAVA"); System.out.println(sq); System.out.println(text); } catch(UnsatisfiedLinkError e){ String property = System.getProperty("java.library.path"); StringTokenizer parser = new StringTokenizer(property, ";"); while (parser.hasMoreTokens()) { System.err.println(parser.nextToken()); } } } }
我的Sample.c文件,
#include "Sample.h" #include JNIEXPORT jint JNICALL Java_Sample_intmethod (JNIEnv *env, jobject obj, jint n){ return n*n; } JNIEXPORT jstring JNICALL Java_Sample_stringmethod (JNIEnv *env, jobject obj, jstring n){ return n; } void main(){}
我用以下命令创建了创建共享库,gcc -shared -I /…/ include -I /…/ include / linux -o libSample.so Sample.c
使用
System.loadLibrary("Samplelib");
代替
System.load("Samplelib");