Als C-Entwickler stoßen Sie möglicherweise auf Szenarien, in denen es notwendig ist, mit Java-Code aus Ihrer Anwendung heraus zu interagieren. Dies kann mithilfe des Java Native Interface (JNI) erreicht werden, das eine Brücke zwischen C/C- und Java-Codeausführungsumgebungen bietet.
Innerhalb des JNI können C-Programme Java-Klassen laden und ausführen sowie deren Methoden aufrufen. Der Prozess erfordert jedoch eine sorgfältige Berücksichtigung folgender Punkte:
Hier ist ein Beispiel in C, das zeigt, wie die toLowerCase-Methode der Java-String-Klasse aufgerufen wird:
#include <jni.h> int main() { // Construct a VM JavaVM *vm; JNIEnv *env; JavaVMInitArgs vm_args; vm_args.version = JNI_VERSION_1_2; int res = JNI_CreateJavaVM(&vm, (void **)&env, &vm_args); // Get a String object jstring jstr = env->NewStringUTF("Hello World"); // Find the String class jclass clazz = env->FindClass("java/lang/String"); // Get the toLowerCase method jmethodID to_lower = env->GetMethodID(clazz, "toLowerCase", "()Ljava/lang/String;"); // Call the toLowerCase method jobject result = env->CallObjectMethod(jstr, to_lower); // Get a C-style string const char* str = env->GetStringUTFChars((jstring) result, NULL); printf("%s\n", str); // Clean up env->ReleaseStringUTFChars(jstr, str); vm->DestroyJavaVM(); return 0; }
Denken Sie daran um Fehlerbedingungen angemessen zu behandeln, indem Rückkehrcodes von JNI-Methoden überprüft werden. Dies stellt den robusten Betrieb Ihrer C-Anwendung bei der Interaktion mit Java-Methoden sicher.
Das obige ist der detaillierte Inhalt vonWie kann ich Java-Methoden aus einer C-Anwendung mit JNI aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!