Heim > Backend-Entwicklung > C++ > Hauptteil

Kann ich Java-Methoden aus einer C-Anwendung aufrufen?

Mary-Kate Olsen
Freigeben: 2024-11-13 00:15:02
Original
880 Leute haben es durchsucht

Can I call Java methods from a C   application?

So rufen Sie Java-Methoden aus C-Anwendungen auf

Problem:

Es ist möglich In Java-Code definierte Funktionen aus einer C-Anwendung aufrufen?

Antwort:

Ja, es ist möglich, Java-Methoden aus C-Code aufzurufen, aber der Prozess ist etwas komplex . Dieser Ansatz nutzt Reflektion und arbeitet nicht typsicher.

Implementierung:

Der C-Code erstellt eine Instanz der Java Virtual Machine (JVM). innerhalb des C-Codes. Wenn der native Code aus Java aufgerufen wird, ist das Erstellen einer VM-Instanz nicht erforderlich.

Hier ist ein Beispiel für den Zugriff auf eine Java-Methode aus C:

#include<jni.h>
#include<stdio.h>

int main(int argc, char** argv) {
    JavaVM *vm;
    JNIEnv *env;
    JavaVMInitArgs vm_args;
    vm_args.version = JNI_VERSION_1_2;
    vm_args.nOptions = 0;
    vm_args.ignoreUnrecognized = 1;

    // Create a JVM
    jint res = JNI_CreateJavaVM(&vm, (void **)&env, &vm_args);

    // Create a Java String object
    jstring jstr = env->NewStringUTF("Hello World");

    // Get the class containing the method to be invoked
    jclass clazz = env->FindClass("java/lang/String");

    // Get the method to be called
    jmethodID to_lower = env->GetMethodID(clazz, "toLowerCase", "()Ljava/lang/String;");

    // Invoke the method on the object
    jobject result = env->CallObjectMethod(jstr, to_lower);

    // Convert the result to a C-style string
    const char* str = env->GetStringUTFChars((jstring) result, NULL);

    printf("%s\n", str);

    // Clean up
    env->ReleaseStringUTFChars(jstr, str);

    // Destroy the JVM
    vm->DestroyJavaVM();

    return 0;
}
Nach dem Login kopieren

Kompilierung:

g++ -I/usr/lib/jvm/java-6-sun/include \
    -I/usr/lib/jvm/java-6-sun/include/linux \
    -L/usr/lib/jvm/java-6-sun/jre/lib/i386/server/ -ljvm jnitest.cc
Nach dem Login kopieren

Hinweis: Es ist wichtig, Fehlercodes aus den JNI-Methoden zu verarbeiten, um ein ordnungsgemäßes Fehlermanagement zu implementieren.

Das obige ist der detaillierte Inhalt vonKann ich Java-Methoden aus einer C-Anwendung aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage