C アプリケーションから Java メソッドを呼び出すにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-10 09:47:02
オリジナル
287 人が閲覧しました

How can I call Java methods from C   applications?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート