2015-01-27 1 views
4

У меня возник вопрос о получении доступа к методам в вложенных классах с JNI.jni не находит метод во внутреннем классе, java.lang.NoSuchMethodError

public class AccountUI { 
    public native ExtrasWageUI[] getExtrasWages(); 

     public class ExtrasWageUI { 
     public ExtrasWageUI() { 
      mCppHandle = callConstructorN(); 
     } 

     public ExtrasWageUI(long cppHandle) { 
      mCppHandle = cppHandle; 
     } 

     private native long callConstructorN(); 
    } 
    } 

Я получаю сообщение об ошибке при accountUI.getExtrasWages():

java.lang.NoSuchMethodError: no method with name='' signature='(J)V' in class Lde/projects/customer/.../myProject/domain/AccountUI$ExtrasWageUI;

JNI не найдет способ. Кто-нибудь знает, как я могу получить доступ к методу во внутреннем классе?

+0

коррекции. Он * * находит класс. Он не находит метод *. * При написании подписи метода JNI не создавайте их самостоятельно. Используйте вывод 'javap -s'. Это никогда не ошибается. – EJP

ответ

1

вы должны добавить внешний класс в подписи:

environment->GetMethodID(resultClassAssistantUI, "<init>", "(L.../domain/AccountUI;J)V");