JNI中C操作java类属性的问题。

绝世酱油瓶 2013-06-25 12:00:03
我的问题是这样的,我C中有一个函数要返回到java一个结构体。我打算直接在C中通过操作java的类的属性实现。
我在java中每个结构定定义了一个对应的实体类。
然后把java中的所有本地方法写在另一个类中、也就是说那些实体类和本地方法的类是分开的、
这样我在JNI的c中操作java实体类的那些属性都没有效?
只能把实体类里面的那些属性和声明本地方法的那个类写在一个类里面才可以吗?

C的代码如下。C的代码没有问题。因为我测试把实体类和声明本地方法的类放一起是可以的,而且编译可以通过。
//操作java屬性
JNIEXPORT void JNICALL Java_com_jni_test_Lesson1_upPerson
(JNIEnv * env, jobject obj){
jclass clazz = (*env)->FindClass(env,"com/jni/test/Person");
jfieldID id_member = (*env)->GetFieldID(env,clazz, "age", "I");
jint number = (*env)->GetIntField(env,obj, id_member);
(*env)->SetIntField(env,obj, id_member, 20L);

jfieldID sex_number = (*env)->GetFieldID(env,clazz, "sex", "Ljava/lang/String;");
jstring sex = (*env)->GetObjectField(env,obj,sex_number);
sex=(*env)->NewStringUTF(env,"zhengwei");
(*env)->SetObjectField(env,obj,sex_number,sex);

}

因为我结构体很多,结构体里的属性也很多,所以我想把结构体对应的实体类单独写一个类。
...全文
120 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小丑哥_V5 2013-06-25
  • 打赏
  • 举报
回复
绝世酱油瓶 2013-06-25
  • 打赏
  • 举报
回复
引用 1 楼 a1006570862 的回复:
java中的所有本地方法怎么样写在另一个类中?没见过
我的图表示的结构这么明显了。本地方法我就是指native方法,不过我自己已经解决了,可以实现。
地下室森林 2013-06-25
  • 打赏
  • 举报
回复
java中的所有本地方法怎么样写在另一个类中?没见过

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧