Bagaimanakah saya boleh memanggil kaedah Java daripada aplikasi C?

Barbara Streisand
Lepaskan: 2024-11-10 09:47:02
asal
258 orang telah melayarinya

How can I call Java methods from C   applications?

Mengantaramuka Java dan C : Memanggil Kaedah Java dari C

Keupayaan untuk memanggil fungsi Java dari dalam aplikasi C memang mungkin tetapi memerlukan pendekatan yang agak rumit. Mekanisme reflektif dan bukan jenis selamat ini melibatkan penciptaan tika Java Virtual Machine (JVM) daripada kod C.

Mencipta Instance JVM

Coretan kod di bawah menunjukkan cara untuk menyediakan tika 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);
Salin selepas log masuk

Berinteraksi dengan Objek Java

Setelah tika JVM dibuat, anda boleh berinteraksi dengan objek Java. Berikut ialah contoh mencipta objek Java String:

jstring jstr = env->NewStringUTF("Hello World");
Salin selepas log masuk

Mengakses Kaedah Java

Untuk mengakses kaedah Java, anda perlu mendapatkan kelas yang mengandungi kaedah:

jclass clazz = env->FindClass("java/lang/String");
Salin selepas log masuk

Kemudian, dapatkan ID kaedah:

jmethodID to_lower = env->GetMethodID(clazz, "toLowerCase", "()Ljava/lang/String;");
Salin selepas log masuk

Memanggil Kaedah Java

Akhir sekali, panggil kaedah pada objek:

jobject result = env->CallObjectMethod(jstr, to_lower);
Salin selepas log masuk

Kompilasi

Di Ubuntu, susun kod menggunakan:

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
Salin selepas log masuk

Kesimpulan

Pendekatan ini membolehkan anda mengakses kaedah Java daripada aplikasi C, membolehkan kesalingoperasian antara kedua-dua bahasa. Walau bagaimanapun, adalah penting untuk melaksanakan pengendalian ralat yang betul untuk keteguhan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memanggil kaedah Java daripada aplikasi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan