Ошибка Android jni invokeMethod

ниже мой код

JNIEXPORT jstring JNICALL Java_demo_emi365_com_natives_Hello_sayHello
        (JNIEnv *env, jclass clazz){
    char* classname = "demo/emi365/com/natives/Hello";
    jmethodID methodID = (*env)->GetMethodID(env, clazz,"function", "(Ljava/lang/String;)I");
    jstring param = (*env)->NewStringUTF(env, "C中调用Java的String参数方法");
    (*env)->CallIntMethod(env,clazz,methodID,NULL);
    return (*env)->NewStringUTF(env,"hello");
}

если с аннотацией CallIntMethod все в порядке , но добавление приведет к сбою, после этого появится информация об ошибке :

    pid: 6893, tid: 6893, name: demo.emi365.com  >>> demo.emi365.com <<<
06-05 11:23:32.398 252-252/? I/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
06-05 11:23:32.554 252-252/? I/DEBUG:     eax 00000000  ebx 00001aed  ecx 00001aed  edx 00000006
06-05 11:23:32.554 252-252/? I/DEBUG:     esi 00001aed  edi 0000000b
06-05 11:23:32.554 252-252/? I/DEBUG:     xcs 00000073  xds 0000007b  xes 0000007b  xfs 00000000  xss 0000007b
06-05 11:23:32.554 252-252/? I/DEBUG:     eip 4006d0a6  ebp 400d1ce0  esp bfcb5490  flags 00200203
06-05 11:23:32.554 252-252/? I/DEBUG: backtrace:
06-05 11:23:32.554 252-252/? I/DEBUG:     #00  pc 0003c0a6  /system/lib/libc.so (tgkill+22)
06-05 11:23:32.554 252-252/? I/DEBUG:     #01  pc 00000005  <unknown>
06-05 11:23:32.554 252-252/? I/DEBUG: stack:
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5450  00000000  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5454  400cd268  /system/lib/libc.so
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5458  00000000  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb545c  4003efe9  /system/lib/libc.so (pthread_mutex_unlock+25)
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5460  400cd18c  /system/lib/libc.so
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5464  80255600  [heap]
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5468  00000015  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb546c  4003efe9  /system/lib/libc.so (pthread_mutex_unlock+25)
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5470  00000000  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5474  4008bad6  /system/lib/libc.so (funlockfile+6)
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5478  400ccfcc  /system/lib/libc.so
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb547c  400770f6  /system/lib/libc.so (__sflush_locked+150)
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5480  00000000  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5484  00000000  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5488  4003ee19  /system/lib/libc.so (pthread_mutex_lock+9)
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb548c  400ccfcc  /system/lib/libc.so
06-05 11:23:32.554 252-252/? I/DEBUG:     #00  bfcb5490  00000006  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5494  00001aed  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb5498  400ccfcc  /system/lib/libc.so
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb549c  40049826  /system/lib/libc.so (pthread_kill+102)
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54a0  00001aed  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54a4  00001aed  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54a8  00000006  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54ac  00000000  
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54b0  400cd268  /system/lib/libc.so
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54b4  4273ece1  /system/lib/libdvm.so
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54b8  400497c9  /system/lib/libc.so (pthread_kill+9)
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54bc  400ccfcc  /system/lib/libc.so
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54c0  bfcb550c  [stack]
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54c4  bfcb574c  [stack]
06-05 11:23:32.554 252-252/? I/DEBUG:          bfcb54c8  42ea29f0  

/ dev / ashmem / dalvik-heap (удалено) 06-05 11: 23: 32.554 252-252 /? I / DEBUG: bfcb54cc 40049bec /system/lib/libc.so (повышение + 44)

Измените, чтобы использовать форматирование Markdown. Я предлагаю использовать символ >, чтобы превратить ошибку в цитату.

Max von Hippel 05.06.2018 06:06
0
1
42
1

Ответы 1

Если собственный метод function() не является статический, ему нужен задание, а не jclasss в качестве второго параметра.

Если это статический, как показано ниже, вы должны вызвать его через (*env)->CallStaticIntMethod().

package demo.emi365.com.natives;

public class Hello { 
    public String native static sayHello();
    public int static function(String param) {
        return 1;
    }
}

Другие вопросы по теме