Maison > développement back-end > C++ > Comment puis-je appeler des méthodes Java à partir d'applications C ?

Comment puis-je appeler des méthodes Java à partir d'applications C ?

Barbara Streisand
Libérer: 2024-11-10 09:47:02
original
311 Les gens l'ont consulté

How can I call Java methods from C   applications?

Interfaçage Java et C : Appel de méthodes Java depuis C

La possibilité d'appeler des fonctions Java depuis au sein d'applications C est en effet possible mais nécessite un approche quelque peu complexe. Ce mécanisme réflexif et non sécurisé implique la création d'une instance de machine virtuelle Java (JVM) à partir du code C.

Création d'une instance JVM

L'extrait de code ci-dessous montre comment configurer une instance JVM :

JavaVM *vm;
JNIEnv *env;
JavaVMInitArgs vm_args;
vm_args.version = JNI_VERSION_1_2;
vm_args.nOptions = 0;
vm_args.ignoreUnrecognized = 1;

// Construct a VM
jint res = JNI_CreateJavaVM(&vm, (void **)&env, &vm_args);
Copier après la connexion

Interagir avec les objets Java

Une fois l'instance JVM créée, vous pouvez interagir avec les objets Java. Voici un exemple de création d'un objet Java String :

jstring jstr = env->NewStringUTF("Hello World");
Copier après la connexion

Accès aux méthodes Java

Pour accéder à une méthode Java, vous devez d'abord obtenir la classe qui contient le method:

jclass clazz = env->FindClass("java/lang/String");
Copier après la connexion

Ensuite, obtenez l'ID de la méthode:

jmethodID to_lower = env->GetMethodID(clazz, "toLowerCase", "()Ljava/lang/String;");
Copier après la connexion

Appel de la méthode Java

Enfin, appelez la méthode sur le object:

jobject result = env->CallObjectMethod(jstr, to_lower);
Copier après la connexion

Compilation

Sur Ubuntu, compilez le code en utilisant :

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
Copier après la connexion

Conclusion

Cette approche permet d'accéder aux méthodes Java à partir d'applications C, permettant l'interopérabilité entre les deux langages. Cependant, il est crucial de mettre en œuvre une gestion appropriée des erreurs pour plus de robustesse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal