JNI:使用自定义返回类型的方法

时间:2013-09-10 09:46:12

标签: java java-native-interface

这是我第一次使用JNI。

我使用native关键字声明方法,然后根据需要成功使用它们。

但我无法加载具有自定义返回类型的方法。

喜欢:

public native Feature[] getFeatures();

我添加了一个名为feature的类,但它表示无法加载此方法。它给了我一个例外。 当我调试它。 在ClassLoader类方法

static long findNative(ClassLoader loader, String name) {
    Vector libs =
    loader != null ? loader.nativeLibraries : systemNativeLibraries;
synchronized (libs) {
    int size = libs.size();
    for (int i = 0; i < size; i++) {
        NativeLibrary lib = (NativeLibrary)libs.elementAt(i);
    long entry = lib.find(name);
    if (entry != 0)
        return entry;
    }
}
return 0;
}

找不到我声明的功能。并解雇NoSuchMethodError。

是否因为返回类型?因为当我声明返回int或boolean的方法时,它工作正常。

这就是我所拥有的。

C头包含:

/*
 * Class:     com_trial_JHeap
 * Method:    getFeatures
 * Signature: ()[Lcom/trial/JHeap/Feature;
 */
JNIEXPORT jobjectArray JNICALL Java_com_trial_JHeap_getFeatures
  (JNIEnv *, jobject);
/*
 * Class:     com_trial_JHeap
 * Method:    setMZException
 * Signature: (II)Z
 */
JNIEXPORT jboolean JNICALL Java_com_trial_JHeap_setMZException
  (JNIEnv *, jobject, jint, jint);

和我的java类:

public class JHeap {
   static {
        System.loadLibrary("JHeap");       
}

public class  Feature {

  public Feature() {
  }
}

public JHeap() {
}

public native boolean setMZException(int check_interval,int retry_interval);
/**
 * 
 * @return
 */
public native JHeap.Feature[] getFeatures();
 }
}

我没有c文件。我只得到了这样的lib

0 个答案:

没有答案