Java 以前工作的函数的不满意链接

Java 以前工作的函数的不满意链接,java,c,java-native-interface,Java,C,Java Native Interface,我有一个以前正在工作的JNI库, 由于某些原因(我不知道有任何当前更改),我无法再使用它,因为我遇到以下错误: 线程“main”java.lang.UnsatifiedLinkError中出现异常:de.ifi.lmu.sommerd.ftsserver.jni.IndexJNI.loadIndex(Ljava/lang/String;)V 位于de.ifi.lmu.sommerd.ftsserver.jni.IndexJNI.loadIndex(本机方法) 下面是我的测试设置: package

我有一个以前正在工作的JNI库, 由于某些原因(我不知道有任何当前更改),我无法再使用它,因为我遇到以下错误:

线程“main”java.lang.UnsatifiedLinkError中出现异常: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
这是我的makefile:

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

问题是我把呼叫改成了static, 所以现在签名不再正确了。
我刚刚不得不将jobject更改为jclass。

run\u queries.o的内部是什么?
test_gcc_lib: run_queries.o
    g++ -shared -fPIC run_queries.o SSA.a -o newLib.so