Jni исключение ---- Дескриптор фиктивного метода? - PullRequest
0 голосов
/ 07 декабря 2011

Я пытаюсь вызвать метод Java в коде cpp:

В коде cpp:

jclass    m_cls = env->FindClass("icm/bdroid/jni/Element");  
jmethodID m_mid_addElement = env->GetMethodID(m_cls,"AddElement","(icm/bdroid/jni/Element:)V");

Код Java:

public void AddElement(Element e) {

Получить следующее исключение:

12-07 04: 21: 00.051: W / dalvikvm (31880): дескриптор фиктивного метода: (icm / bdroid / jni / Элемент:) V

12-07 04: 21: 00.051: W / dalvikvm (31880): Дескриптор фиктивного метода: (icm / bdroid / jni / Элемент:) V

12-07 04: 21: 00.051: D / dalvikvm (31880): GetMethodID: метод не найден: Licm / bdroid / jni / Элемент; .AddElement: (icm / bdroid / jni / Элемент:) V

12-07 04: 21: 00.051: W / dalvikvm (31880): JNIВНИМАНИЕ: Метод JNI вызван с исключением поднятого

12-07 04: 21: 00.051: W / dalvikvm (31880): в Licm / bdroid / jni / Jni; .parseScore (J) Licm / bdroid / jni /Элемент;(NewObjectV)

Ответы [ 3 ]

3 голосов
/ 24 января 2012

Я думаю, что это должно быть:

env->GetMethodID(m_cls,"AddElement","(Licm/bdroid/jni/Element;)V"); 
0 голосов
/ 04 октября 2018

Простой способ получить сигнатуры методов - это утилита javap:

javap -cp your.jar -s fully.qualified.class.Name
0 голосов
/ 19 марта 2016

Проверьте секцию «Типовые подписи» https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/types.html

L полностью квалифицированного класса;полностью квалифицирован-класс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...