先前工作的功能链接不满意



我有一个以前工作的JNI库,由于某种原因(我不知道任何文化变化),我不能再使用它了,因为我得到以下错误:

线程"main"异常java.lang.UnsatisfiedLinkError: de.ifi.lmu.sommerd.ftsserver.jni.IndexJNI.loadIndex(Ljava/lang/String;)V在de.ifi.lmu.sommerd.ftsserver.jni.IndexJNI。loadIndex(本地方法)

下面是我的测试设置:

package de.ifi.lmu.sommerd.ftsserver.jni;
public class IndexJNI {
    static {
        System.load("/home/XXX/workspace/IndexJNI/resources/newLib.so");
        System.out.println("Loading library worked");
        IndexJNI.loadIndex("");
    }

    public static native void loadIndex(String indexName);
}

.h和。c文件的相关部分:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI */
#ifndef _Included_de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI
#define _Included_de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI
 * Method:    loadIndex
 * Signature: (Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI_loadIndex
  (JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif

.c文件

JNIEXPORT void JNICALL Java_de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI_loadIndex
  (JNIEnv * env, jclass jc, jstring indexName) {
...
}

这是我的makefile:

test_gcc_lib: run_queries.o
    g++ -shared -fPIC run_queries.o SSA.a -o newLib.so

问题是我将调用更改为static,所以现在签名就不正确了。我只需要将jobject更改为jclass。

最新更新