Java と C のインターフェース : C から Java メソッドを呼び出す
C アプリケーション内から Java 関数を呼び出す機能は確かに可能ですが、やや複雑なアプローチ。このリフレクティブで非タイプセーフなメカニズムには、C コードから Java 仮想マシン (JVM) インスタンスを作成することが含まれます。
JVM インスタンスの作成
以下のコード スニペット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);
Java との対話オブジェクト
JVM インスタンスが作成されると、Java オブジェクトと対話できるようになります。 Java String オブジェクトの作成例を次に示します。
jstring jstr = env->NewStringUTF("Hello World");
Java メソッドへのアクセス
Java メソッドにアクセスするには、まず、 Method:
jclass clazz = env->FindClass("java/lang/String");
次に、メソッドを取得しますID:
jmethodID to_lower = env->GetMethodID(clazz, "toLowerCase", "()Ljava/lang/String;");
Java メソッドの呼び出し
最後に、オブジェクトのメソッドを呼び出します:
jobject result = env->CallObjectMethod(jstr, to_lower);
コンパイル
Ubuntu でコードをコンパイルしますusing:
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
結論
このアプローチにより、C アプリケーションから Java メソッドにアクセスできるようになり、2 つの言語間の相互運用性が可能になります。ただし、堅牢性を確保するには、適切なエラー処理を実装することが重要です。
以上がC アプリケーションから Java メソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。