Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JNI: Passing multiple parameters in the function signature for GetMethodID

Tags:

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.

like image 795
Jary Avatar asked Oct 29 '11 17:10

Jary


1 Answers

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;.

like image 69
m039 Avatar answered Sep 22 '22 09:09

m039