请问各位jni高手有关从c调用java类方法的问题,多帮忙啊 是不是要用RTTI来运行时编译类?有谁知道吗?快来帮帮我吧,自己up一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我不是太明白你的做法.如果JAVA程序照你的改法,则在C中不可以用GetStaticMethodID方法来查找.因为你JAVA程序里面的方法已经不是静态的了.所以你虽然找到了该方法,却因无实例而无法使用.用GetMethodID去找动态的方法用AllocObject方法建类对象用CallIntMethod方法来使用你的JAVA 方法.切记:第一个参数不是类句柄,而是实例句柄. 谢谢realajax的答复,我把例子写错了,test方法应该是static的,sorry。我以前是直接用CallIntMethod方法调用的,发现不管怎么样返回都是零,而且c里也没有报错,后来改成了CallStaticIntMethod,同时java中的test方法前面也加上了static,才可以得到返回值。我也不明白为什么会这样? JAVA中严格区别静态及动态的方法,动态方法必须有实例产生才可以使用.静态方法则不用.由于JNI实际上是SUN公司为JAVA作的扩充功能的接口,所以会遵循JAVA标准.但JNI并不是非常完善的,所以出现取得句柄是没有问题,但实际运行时却因找不到类实体而出现运行方法句柄为空的情况.所以返回空值. 在java中静态或动态的方法是被严格区分的.动态的方法是必须存在类对象后才可以使用.静态的则不必存在类对象.JNI是JAVA的扩展接口,严格遵从此规矩.所以静态方法和动态方法必须采用不同的方法取得其句柄.我遇到过类似的情况.用静态的方法去取得动态方法的句柄,不出错,且运行时也不报错,只是没有正确结果.其实方法的句柄根本不是想要的,因此没有运行起来.应该是JNI的BUG,可能用过的人少,没有人去注意这一情况吧. 请问在pthread 内?调jni的方法,就core dump呢,而在进程中都ok 哪位大侠能说一下学习java的方法 js string To date 只要时分 高分求帮助! JAVA 读取Excel中部分加删除线的字符 关于用java开发的软件的发布问题 关于lastindexOf()的问题 求助java类库手册 请问:如何实现动态更改数据库名的存储过程 心情不好 连续散分~~4 :( 被jbuilder难住了,郁闷中~散分(附带个小问题) 难道没人知道如何使用java访问lotus邮件的高手吗? 急啊,那位兄弟有全球IP地址的分配对应表? 如何判断一个object是数组类型还是集合类型或者其他类型!
用GetMethodID去找动态的方法
用AllocObject方法建类对象
用CallIntMethod方法来使用你的JAVA 方法.切记:第一个参数不是类句柄,而是实例句柄.