Java JNI:使用具有自定义返回类型的方法
这是我第一次使用JNI 我使用native关键字声明这些方法,然后根据需要成功地使用它们 但我无法加载具有自定义返回类型的方法 比如: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 =
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();
}
}