2016-04-14 3 views
1

私は、Arrayがカスタムオブジェクトである以下のJavaコードを使用しています。jobject配列からJclassまたはjobjectを取得します。JNI

public native int pax_store_get_data_avail_info(DataAvailable[] stats_array); 

マイJNI生成されたファイルは

JNIEXPORT jint JNICALL Java_demo_JNIWrapper_pax_1store_1get_1data_1avail_1info 
     (JNIEnv *env, jclass jclass1, jobjectArray jobj){ 
} 

です私はJNI内jobjectArrayを移入したい、と私は私のimplementionを使用しようとしたとき、私のプログラムがクラッシュしました。

JNIEXPORT jint JNICALL Java_demo_JNIWrapper_pax_1store_1get_1data_1avail_1info 
    (JNIEnv *env, jclass jclass1, jobjectArray jobj){ 


struct pax_store_data_avail_stat_s test_stat [2] ; 

    int i; 

    test_stat [0].time = 1460332625; // 4/10/2016, 4:57:05 PM 
    test_stat [0].bytes_in_this_second = 20; 

    test_stat [1].time = 1460332626; // 4/10/2016, 4:57:06 PM 
    test_stat [1].bytes_in_this_second = 30; 
    jclass dataClass=(*env)->GetObjectClass(env,"demo/DataAvailable");//Crash Over here 

私はjオブジェクトの配列からJCLASSまたはjオブジェクトを取得する場合、クラス。だからがオンに教えオブジェクトを取得することができませんでした。

JNIコードの中にJobject Arrayを配置できる他の方法はありますか。

jobject object = ... 
jclass c =(*env)->GetObjectClass(env, object); 

が明らかに動作しないクラス名を渡す:

+0

あなたは考えがあります* *あなたが使っている 'GetObjectClassメソッド()'当然のように文書化されていない方法で?それはうまくいきませんが、正しく使用すると、その方法はあなたの質問に対する答えです。 – EJP

答えて

3

は、オブジェクトのクラスを取得するためにGetObjectClassを使用することができますjobjectを考えます。代わりに - クラス名を指定 - 取得するFindClassを使用しjclass:マニュアルを参照して、コンサルティング

jclass c =(*env)->FindClass(env, "demo/DataAvailable"); 
関連する問題