Is there a way to call a java method, which returns a String in C?
For Integer it works like that:
JNIEXPORT jint JNICALL Java_Client_getAgeC(JNIEnv *env, jobject callingObject, jobject employeeObject) {
jclass employeeClass = (*env)->GetObjectClass(env, employeeObject);
jmethodID midGetAge = (*env)->GetMethodID(env, employeeClass, "getAge", "()I");
int age = (*env)->CallIntMethod(env, employeeObject, midGetAge);
return age;
}
I've searched for a long time but nothing works for String.
Finally, I want to get a char*
Thanks in advance!
解决方案
in Java, define the native method
public class Client {
public static native getVorname(int employeeNumber);
}
and here is the C side:
Employee employees[100];
JNIEXPORT jstring JNICALL Java_Client_getVorname(JNIEnv *env, jclass clientClass, jint employeeNumber) {
if (employeeNumber < 0 || employeeNumber > 100) {
return NULL;
}
Employee* ptr = employees[employeeNumber];
return (*env)->NewStringUTF(env, ptr->vorname);
}