• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語からjavaを呼び出したい)

C言語からJavaを呼び出す方法と設置場所についての質問

このQ&Aのポイント
  • C言語からJavaを呼び出す方法と設置場所について質問です。JNIを使用してC言語からJavaを呼び出しましたが、Javaのオブジェクトの設置場所が分かりません。
  • 具体的には、1) クラスファイルのままでも良いのかjarにする必要があるのか、2) Javaモジュールをどこに設置すれば良いのか、が分からないです。
  • これまでの流れとしては、1) Javaソースを作成してコンパイルし、2) /etc/profileに環境変数を追加しました。さらに、3) C言語のソースをコンパイルしました。ただ、Javaモジュールの設置場所が分からないので困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>1.classファイルのままでも良いのかjarにしないといけないのか? classファイルのままでもjarにまとめてもどちらでもいいです。 >2.どこに設置したら良いのか? jvm起動時にクラスパス設定してあげればよいので、どこでもご自由に。

miruha2011
質問者

お礼

ご回答ありがとうございます。 まだできないのでもう少し教えて下さい。 printf("Start Jnitest\n"); JNIEnv *env; JavaVM *jvm; JNIEnv jni; JavaVM vmi; JavaVMInitArgs vm_args; JavaVMOption options[4]; printf("beginning execution...?n"); /* * /opt/blackdown-jdk-1.4.2/がJavaのルートディレクトリの場合 */ options[0].optionString = (char *) "-Djava.class.path=.:/usr/java/jdk1.7.0_03/jre/lib/rt.jar"; options[1].optionString = (char *) "-Djava.compiler=NONE"; vm_args.version = JNI_VERSION_1_4; vm_args.options = options; vm_args.nOptions = 2; vm_args.ignoreUnrecognized = JNI_FALSE; /* * JavaVMを初期化,起動する * JNIインターフェースへのポインタを返す */ JNI_CreateJavaVM(&jvm,(void **)&env,&vm_args); jni = *env; vmi = *jvm; /* * クラスをさがす */ jclass cls = jni->FindClass(env, "JniTest"); if (cls == 0) { printf("cannot found JniTest\n"); exit(1); } 上記のコードでjclass cls = jni->FindClass(env, "JniTest");が失敗するようです。(「cannot found JniTest」で終了します) JniTest.classはCの実行モジュールと同じパスに置きました。 # ll -rw-r--r-- 1 root root 609 4月 4 03:01 JniTest.class -rwxr-xr-x 1 root root 7737 4月 4 15:10 jnitest -rw-r--r-- 1 root root 1468 4月 4 15:08 jnitest.c クラスパスの設定方法が間違っているのでしょうか?

関連するQ&A