首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

c通过JNI调用java,不能访问构造方法解决思路

2012-03-06 
c通过JNI调用java,不能访问构造方法java代码:public class Simple2{int numstatic int snum 0//没运行

c通过JNI调用java,不能访问构造方法
java代码:
public class Simple2
{
int num;
static int snum = 0; //没运行一次getDoudble,snum+1
public Simple2(int num){
this.num = num;
}

public static int getNum(){
return snum;
}

public int getDoudble(){
snum = snum + 1;
return 2*num;
}
};
c语言部分代码:
  jclass cls;
jmethodID mid;
jobject jobj;
  cls = env->FindClass("Simple2");
if(cls != 0)
{
mid = env->GetStaticMethodID(cls,"getNum","()I");
if(mid != 0)
{
result = env->CallStaticIntMethod(cls,mid);
printf("第一次getNum为:%d\n",result);
}
mid = env->GetMethodID(cls,"<INIT>","(I)U"); if(mid != 0)
{
jobj = env->NewObject(cls,mid,18); //将18传入
printf("init ok!\n");
}
mid = env->GetMethodID(cls,"getDoudble","()I");
if(mid !=0 )
{
result = env->CallIntMethod(jobj,mid); //后面可以继续加参数
printf("调用getDoudble为:%d\n",result);
}
mid = env->GetStaticMethodID(cls,"getNum","()I");
if(mid != 0)
{
result = env->CallStaticIntMethod(cls,mid);
printf("第二次getNum为:%d\n",result);
}
}
运行到红色部分,直接失败,导致后面运行出错,不知道有没有高手知道怎么解决。

[解决办法]
mid = env->GetMethodID(cls,"<INIT>","(I)U")
没看到这个方法
[解决办法]
坐等高手
[解决办法]
native啊
[解决办法]
mid = env->GetMethodID(cls,"<init>","(I)V")

[解决办法]
不懂啊,帮顶

祝楼主好运

热点排行