'fatal error (JVM Crashed) while passing array of properties from c to java using jni

i want to read file and pass file contents from c to java using properties collection. I got " A fatal error has been detected by the Java Runtime Environment:" what would be the problem

C code


JNIEXPORT jobjectArray JNICALL Java_jniex2_view
  (JNIEnv *env, jobject this){
    fr=fopen("lmf.txt","r");  
    jclass cls_Properties = (*env)->FindClass(env,"java/util/Properties");
    jmethodID mid_Properties_ctor = (*env)->GetMethodID(env,cls_Properties, "<init>", "()V");
    jmethodID mid_Properties_put = (*env)->GetMethodID(env,cls_Properties, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
    jstring title = (*env)->NewStringUTF(env,"title");
    jstring author = (*env)->NewStringUTF(env,"searchtag");
    jstring year = (*env)->NewStringUTF(env,"year");
    jstring genre = (*env)->NewStringUTF(env,"genre");
    jstring rating = (*env)->NewStringUTF(env,"rating");
    jstring searchtag =(*env)->NewStringUTF(env,"searchtag");
    int i=0,m=0;
    while(fscanf(fr,"%[^:]:%s %s %s %s %s\n",s1,t1,a1,y2,g1,r1)!=EOF){
        m++;
    }
    jobjectArray ret = (*env)->NewObjectArray(env,m, cls_Properties, 0);
    while(fscanf(fr,"%[^:]:%s %s %s %s %s\n",s1,t1,a1,y2,g1,r1)!=EOF){
        printf("%[^:]:%s %s %s %s %s\n",s1,t1,a1,y2,g1,r1);
        jobject prop = (*env)->NewObject(env,cls_Properties, mid_Properties_ctor);
        (*env)->PushLocalFrame(env,6);
        (*env)->CallObjectMethod(env,prop, mid_Properties_put, title, (*env)->NewStringUTF(env,t1));
        (*env)->CallObjectMethod(env,prop, mid_Properties_put, author, (*env)->NewStringUTF(env,a1));
        (*env)->CallObjectMethod(env,prop, mid_Properties_put, year, (*env)->NewStringUTF(env,"2000"));
        (*env)->CallObjectMethod(env,prop, mid_Properties_put, genre, (*env)->NewStringUTF(env,g1));
        (*env)->CallObjectMethod(env,prop, mid_Properties_put, rating, (*env)->NewStringUTF(env,"4.5"));
        (*env)->CallObjectMethod(env,prop, mid_Properties_put, searchtag, (*env)->NewStringUTF(env,s1));
        prop = (*env)->PopLocalFrame(env,prop);
        (*env)->SetObjectArrayElement(env,ret, i, prop);
        i++;
    }
    fclose(fr);
    return ret;    
}


The java code that invokes view() funtion.

Java Code

public class jniex2{
    public native  Properties[] view();
    static{
        System.loadLibrary("hello1");
    }
    public static void main(String ar[])throws IOException,FileNotFoundException{  
        Properties[] records = jn.view();      
        for(Properties record:records){
            System.out.println("title:"+record.getProperty("title"));
            System.out.println("author:"+record.getProperty("author"));
            System.out.println("year:"+record.getProperty("year"));
            System.out.println("genre:"+record.getProperty("genre"));
            System.out.println("rating:"+record.getProperty("rating"));
            System.out.println("searchtag:"+record.getProperty("searchtag"));
            System.out.println("");
        }
    }
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source