当前位置: 首页 > 面试题库 >

JNI。如何从jobject获取jstring并将其转换为char *

邢皓
2023-03-14
问题内容

到目前为止,这就是我所拥有的:我传递一个具有2个字段的对象:String和Integer作为参数,并且我想发送信息以在C部分中对其进行处理,这在当时并不重要…我抱怨在jstring声明

JNIEXPORT jint JNICALL Java_Tier3_NativeMethods_totalPalletsIn(
            JNIEnv *env, jclass cls, jobject stat) {

jclass staticsitcs = (*env)->GetObjectClass(env, stat);

// Here I try to get it using the ID
jfieldID idDate = (*env)->GetFieldID(env, staticsitcs, "date", "S");

jstring dateString = (jstring)(*env)->GetStringRegion(env, stat, idDate);

// Here converting whatever I get in jstring to char*
char* date = (*env)->GetStringUTFChars(env,dateString,0);

// Getting the 2nd field from the object
jfieldID idNumber = (*env)->GetFieldID(env, staticsitcs, "amount", "I");

jint amount = (*env)->GetDoubleField(env, stat, idNumber);

// Calling C method
jint totalPallets = checkTotalPalletsIn(date, amount);

(*env)->ReleaseStringUTFChars(env, dateString, date);

return totalPallets;
}

我想念什么?


问题答案:

jstring dateString = (jstring)(*env)->GetObjectField(env, stat, idDate);

……然后一切正常。



 类似资料:
  • 问题内容: 我已经通过使用JNI 将URL字符串从Java传递为C代码作为数据类型。我的库方法需要一个as url。 我如何转换的? PS:在C中使用jcharArray有什么优势吗?(即在本地方法中传递而不是字符串) 问题答案: 这是我开始使用JNI时发现的几个有用的链接 http://en.wikipedia.org/wiki/Java_Native_Interface http://down

  • 问题内容: 我正在使用Java本机功能- 在C ++中,我的本机函数- 我的问题是如何将resultList(向量类型)转换为jobject类型? 问题答案: 您必须在C ++中为ArrayList创建包装器。就像是: 有关更多信息,请参见: http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html

  • 我现在有这个JSON文件: 我想获取所有用户名并将其转换为ArrayList。所以我的ArrayList只有用户名、用户名1和用户名2。 我也在使用org. JSON。

  • 问题内容: 我知道我可以使用,但是,我需要窥视对象的(可能不是第一个参数),以确定要转换的特定类。本质上,我想做的是这样的: 问题答案: 首先将JSON解析为JObject。然后使用LINQ to JSON 查找属性。然后根据值切换并使用进行强制转换:

  • 我有以下代码来返回对象数组,对象数组中填充了基元类型的结构元素,我不知道如何将基元类型转换为jobject,然后使用SetObjectArrayElement方法设置为ObjectArray, 下面是我的C结构信息 我的JNI代码 写入核心转储失败。核心转储已被禁用。要启用核心转储,请在再次启动Java之前尝试“ulimit-c unlimited” 包含更多信息的错误报告文件保存为:/data1

  • 我正在尝试使用JNI将一些数据从C++发送到Java。 在C++中,我有: 所以我想用JNI返回所有关于Java的数据,我正在尝试,但不起作用 null