【发布时间】:2016-04-14 22:18:48
【问题描述】:
我有下面的 Java 代码,其中 Array 是一个自定义对象。
public native int pax_store_get_data_avail_info(DataAvailable[] stats_array);
我的 JNI 生成文件是
JNIEXPORT jint JNICALL Java_demo_JNIWrapper_pax_1store_1get_1data_1avail_1info
(JNIEnv *env, jclass jclass1, jobjectArray jobj){
}
我想在 JNI 中填充 jobjectArray,当我尝试使用我的实现时,我的程序崩溃了。
JNIEXPORT jint JNICALL Java_demo_JNIWrapper_pax_1store_1get_1data_1avail_1info
(JNIEnv *env, jclass jclass1, jobjectArray jobj){
struct pax_store_data_avail_stat_s test_stat [2] ;
int i;
test_stat [0].time = 1460332625; // 4/10/2016, 4:57:05 PM
test_stat [0].bytes_in_this_second = 20;
test_stat [1].time = 1460332626; // 4/10/2016, 4:57:06 PM
test_stat [1].bytes_in_this_second = 30;
jclass dataClass=(*env)->GetObjectClass(env,"demo/DataAvailable");//Crash Over here
我无法获得 Object 类。所以如果我从 Jobject Array 中获得 jclass 或 jobject 的话,请教我。
还有其他方法可以用来在 JNI 代码中填充 Jobject 数组吗?
【问题讨论】:
-
您考虑过查阅文档吗?您正在以一种没有记录的方式使用
GetObjectClass(),所以它当然不起作用,但那正确使用方法是您问题的答案。
标签: java c java-native-interface