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

Java JNI:使用具有自定义返回类型的方法,java,java-native-interface,Java,Java Native Interface,这是我第一次使用JNI 我使用native关键字声明这些方法,然后根据需要成功地使用它们 但我无法加载具有自定义返回类型的方法 比如: public native Feature[] getFeatures(); 我添加了一个名为feature的类,但它表明无法加载此方法。这给了我一个例外。 当我调试它的时候。 在ClassLoader类方法中 static long findNative(ClassLoader loader, String name) { Vector libs =

这是我第一次使用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;
}
还有我的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文件。我只得到so lib

使用“自定义”类作为返回类型或方法参数没有问题。在这种情况下,您提供给我们的关于问题所在的信息太少。“这给了我一个例外”是一个宽泛的说法。我添加了一些细节。问题是,当我添加了一个名为Feature的类来匹配它的返回类型时,我不知道为什么它找不到它。你到底想用这些代码做什么?是否使用本机代码加载库?使用
System.loadLibrary()
。您需要发布(1)contains类,包括其包,(2)生成的.h文件和(3).c或.cpp文件的相关部分,特别是它包含的内容和定义的方法。添加了我所有的内容:)
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();
 }
}