2013-03-25 4 views
0

я имел работу ранее JNI ОМТ по какой-то причине (я не знаю ни curcial изменений) Я не могу использовать его больше, как я получаю следующее сообщение об ошибке:Неудовлетворенная ссылка на функцию, которая работала ранее

Exception in thread "main" java.lang.UnsatisfiedLinkError: de.ifi.lmu.sommerd.ftsserver.jni.IndexJNI.loadIndex(Ljava/lang/String;)V at de.ifi.lmu.sommerd.ftsserver.jni.IndexJNI.loadIndex(Native Method)

Так вот мой тест установка:

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 
+0

Что находится внутри run_queries.o? –

ответ

0

Таким образом, проблема в том, что я изменил вызов статическим, так что теперь подпись была не исправить больше. Мне просто пришлось сменить задание на jclass.