- - PR -
JAVA5環境におけるjavaVMの使用方法について。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2009-02-25 18:25
現在、IBMのZサーバ(Linux x64)上で、C++から "JNI_CreateJavaVM" を行い、
VM上で、JAVAプログラムを実行させようとしています。 この時、JAVA4を使用した場合は、VMが生成できて正常にJAVAプログラムを起動出来たのですが、 JAVAのバージョンをJAVA5にアップしたところエラーになってしまい、VMの作成自体が出来ませんでした。 JAVA5では、J9VMフォルダ配下の "libjvm.so" をC++プログラムにリンクして使用しているのですが、 JAVA4とJAVA5では、"libjvm.so" の使用方法が異なるのでしょうか? 試しとして、JAVA5環境でJAVA4の"libjvm.so" を使用してみたところ、 "JNI_CreateJavaVM" は行えたのですが、その後の "FindClass" でエラーになりました。 ソースは、下記のようになっております。 // JavaVMを生成 jint res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); // Javaのクラスを検索 jclass clazz = env->FindClass("TestPro"); // Javaのメソッドを検索 jmethodID mid = env->GetStaticMethodID(clazz, "main", "([Ljava/lang/String;)Ljava/lang/String;"); また、JAVA4の"libjvm.so" と JAVA5の"libjvm.so"のサイズが極端に異っていることも気になります。 JAVA4の"libjvm.so"は、5027847バイトなのに対し、 JAVA5の"libjvm.so"は、128159バイト(J9VMフォルダ)、70338バイト(classicフォルダ)となっています。 使用環境・使用方法の情報が少ないかもしれませんが、 IBMのJ9VMに詳しい方、若しくは解説等のあるページをご存知の方がいらっしゃいましたら、 ぜひ、教えて下さい。 宜しくお願いします。 以上です。 |
|
投稿日時: 2009-03-09 10:59
JNI アプリケーションの作成
ネイティブ・プログラムが JNI_CreateJavaVM() API 呼び出しで 指定できる有効な JNI バージョン番号は、以下のとおりです。 * JNI_VERSION_1_2(0x00010002) * JNI_VERSION_1_4(0x00010004) このバージョン番号で決まるのは、使用する JNI ネイティブ・インターフェースのレベルのみです。 作成される JVM の実際のレベルは、J2SE ライブラリーによって指定されます (つまり、v5.0)。 JNI インターフェース API は、JVM によって実装される言語仕様や、 クラス・ライブラリー API、その他の範囲の JVM 動作に影響しません。 詳しくは、http://java.sun.com/j2se/1.5.0/docs/guide/jni を参照してください。 32 ビット用に作成されたものと 64 ビット用に作成されたものの 2 つの JNI ライブラリーがアプリケーションで必要な場合、 com.ibm.vm.bitmode システム・プロパティーを使用して、 32 ビットまたは 64 ビット JVM のどちらで実行しているかを判別し、 適切なライブラリーを選択します。 IBM 5.0 SDK でネイティブ・アプリケーションをコンパイルおよびリンクするには、 次のコマンドを使用します。 gcc -I/opt/ibm/java2-i386-50/include -L/opt/ibm/java2-i386-50/jre/bin/j9vm -ljvm -ldl -lpthread <JNI program filename> -ljvm オプションは、libjvm.so が、JVM を実装する共用ライブラリーであることを指定します。 -lpthread オプションは、ネイティブ pthread サポートを使用することを指示します。 pthread ライブラリーとリンクしないと、 JNI プログラムの実行時にセグメンテーション障害 (シグナル SIGSEGV) が発生する可能性があります。 注:Java Native Interface (JNI) の Version 1.1 はサポートされません。 http://lampwww.epfl.ch/java/java-ibm-1.5/docs/ja/sdkandruntimeguide.lnx.ja.htm#wq51 |
1