![](/img/trans.png)
[英]Java JNI: How to set String [ ] field Of Java class from native method of C++
[英]Check for presence of optional field or method in Java Class from JNI code
我有一个Java类可以被子类化以添加一个额外的字段。 有一个相应的C ++ JNI方法将与该字段进行交互。 但是,我希望JNI代码同时处理基类和子类,这意味着它必须检测字段是否存在。
我的(简化)JNI代码如下所示:
fid = j.GetFieldID( jc, UTF8_SECPARM, SIG_SECPARM );
if ( fid == 0 ) return;
... continue with fid ...
虽然GetFieldID()方法返回NULL,但应用程序在处理的某个进一步的点处获得异常,这似乎与此代码无关。 然而,它在某种程度上是相关的,因为如果我只是在GetFieldID()方法之前返回,则没有异常。
如何从JNI代码中可靠地测试对象中字段或方法的存在?
事实证明,虽然GetFieldID()方法返回NULL,但是还生成了必须处理的Java异常。
解决方案是检查异常并清除(或处理)异常。 最简单的解决方案是:
fid = j.GetFieldID( jc, UTF8_SECPARM, SIG_SECPARM );
if ( JNI_TRUE == j.ExceptionCheck() ) {
j.ExceptionClear();
return;
}
... continue with fid ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.