android – JNI: Passing multiple parameters in the function signature for GetMethodID-ThrowExceptions

Exception or error:

I am trying to execute a function in Java (from C) that has the following signature:

public void execute(int x, int y, int action);

My problem is to define the function signature in GetMethodID:

env->GetMethodID(hostClass, "execute", "(I;I;I;)V");

The problem I ma getting is:

W/dalvikvm( 1849): Bogus method descriptor: (I;I;I;)V
W/dalvikvm( 1849): Bogus method descriptor: (I;I;I;)V
D/dalvikvm( 1849): GetMethodID: method not found: Lcom/device/client/HostConnection;.execute:(I;I;I;)V

I am not sure how to specify the method signature in GetMethodID (for 3 integers as parameters). I saw people use the “;” to separate parameters in other posts for the String and File class, but nothing with primitives like integer.

What would be the correct way to do this please?

Thank you.

How to solve:

According to this file you should use (III)V signature. Only when you need to specify
fully qualified class you should use ‘;’, like Ljava/lang/String;.

Leave a Reply

Your email address will not be published. Required fields are marked *