JNI GetMethodID problem on PocketPC

W

w.uroda

Hi,

I am not a complete novice at JNI, but by no means an expert. I am
writing a JNI interface on pocket pc (using visual studio 2005 for the
native dll).

The problem I am having is that I cannot construct an instance of a
class. My class is a top level class (I thought it might have been
having problems because it used to be an inner class).

I have found the class using FindClass. No exceptions were thrown.

I then try to find the constructor using GetMethodID. I am using
identical code as I used in linux earlier this year. I have even cut
down my constructor to have the signature of ()V, as confirmed by javap
(although this is javap as supplied by the jdk1.5.0_07, so i am
wondering if the personal profile/CDC 1.0 on my pocket pc is adding
some extra voodoo I am not aware of).

Here is the offending code:
=======================================================
jclass modelType = NULL;
jmethodID constructor = NULL;
jobject ret = NULL;
GrabbaModelType tmp;
Err err = errNone;

memset(&tmp, 0, sizeof(tmp));

modelType = env->FindClass("com/grabba/GrabbaModelType");
if (modelType == NULL)
{
env->ExceptionDescribe();
MessageBox(NULL, L"Could not find the Grabba Modeltype class!\n", L"",
MB_OK);
return NULL;
}

constructor = env->GetMethodID(modelType, "<init>", "()V");
if (constructor == NULL)
{
env->ExceptionDescribe();
MessageBox(NULL, L"Unable to find constructor for Modeltype\n", L"",
MB_OK);
return NULL;
}
=======================================================

The code will bail after GetMethodID returns Null. The exception
reported is "java.lang.NoSuchMethodError:
com/grabba/GrabbaModelType.<init>()V".

I am sure I am not overlooking something obvious, as the code works
verbatim in linux (minus the MessageBox calls). I am probably trying to
stretch the PP/CDC too far, although it seems strange that it should
support such advanced things as jvm->AttachCurrentThread and
FindClass without being able to find the constructor. It is virtually
useless to me, the alternative is to build more in the java side of my
wrapper - this makes the java interface rather nasty as it has alot of
ugly interface code, which I don't want my users to see.

Thanks for your help,

- Wayne
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top