C端:unsigned char vldfluse;
const char* SHORT_SIG = "S";
static jfieldID jfVolumeVldfluse = NULL;
const char* VOLUME_FIELDNAME_VLDFLUSE = "vldfluse";
const char* VOLUME_CLASS_NAME = "com/ibm/stg/jzos/VolumeInfo$Volume"; //java中定义的内部类Volume
jclass localClassRef = env->FindClass(VOLUME_CLASS_NAME);
if (!localClassRef) {
return; // ClassNotFoundException
}
jcVolume = (jclass)env->NewGlobalRef(localClassRef);
env->DeleteLocalRef(localClassRef);
localClassRef = NULL;
if (!jcVolume) {
return; // exception was thrown
}
jfVolumeVldfluse = env->GetFieldID(jcVolume, VOLUME_FIELDNAME_VLDFLUSE, SHORT_SIG);
//上面都是一些初始化操作
env->SetShortField(joVolume, jfVolumeVldtluse, (jshort)pVolumeInfo->vldtluse); // 设置要返回到java端的对象joVolume中jfVolumeVldtluse字段的值。使用short的形式
if (env->ExceptionOccurred()) return NULL; // exception was thrown
Java端:private short vldfluse; // java中的Volume成员变量的类型定义为short。使用short去接收。
刚开始使用string去接收一个char遇到了错误,最终通过short去接收char。