Проблемный кадр Ошибка при создании JVM с использованием подпрограммы JNI_CreateJavaVM для c
Сегодня я получаю задачу для вызова java-метода с помощью подпрограммы c. В настоящее время я вызываю подпрограмму ac по java, откуда я вызываю метод java, чем я получил фатальную ошибку
#A fatal error has been detected by the Java Runtime Environment:
# SIGSEGV (0xb) at pc=0x00002b170bae1d66, pid=10052, tid=47378050390336
JRE version: 7.0_21-b11
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.21-b01 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libHelloImpl.so+0xd66] process_message+0xdb
#
мой код для вызова метода Java
JNIEXPORT Java_com_example_mail_MailProcessingEngine_intializeMTADequeueDaemon(JNIEnv *jniEnv, jobject obj)
{
jclass mailProcessingClass;
jmethodID callingMethod;
jobjectArray applicationArgs;
jstring applicationArg0;
mailProcessingClass = (*jniEnv)->FindClass(jniEnv, "com/example/mail/MailProcessingEngine");
printf("\nhelloWorldClass-%d",mailProcessingClass);
callingMethod = (*jniEnv)->GetStaticMethodID(jniEnv,mailProcessingClass, "processMail", "(I)I");
printf("\nmainMethod-%d",callingMethod);
if (callingMethod == 0) {
printf("Could not find Method\n");
}else{
printf("FInd Method");
}
int isSuccess = (*jniEnv)->CallStaticIntMethod(jniEnv, mailProcessingClass, callingMethod, 6);
printf("IsSuccess - "+isSuccess);
}
и мой класс Java
package com.example.mail;
public class MailProcessingEngine {
public native void intializeMTADequeueDaemon();
static { System.loadLibrary("MailerImpl"); }
public static void main (String[] args) {
MailProcessingEngine mailProcessingEngine = new MailProcessingEngine();
mailProcessingEngine.intializeMTADequeueDaemon();
}
public static int processMail(int mailId){
System.out.println("MailId :"+mailId);
return 1;
}
}
Может кто-нибудь сказать мне, что я здесь не так. В конце концов, мы можем перезвонить java-методу с той же ссылкой на среду jni.
Спасибо, Ашиш Панери