ndk开发总结

1.findclass()找不到自定义的类的解决方法:

步骤1:设置-Djava.class.path

 

//具有用于JVM 的各种选项设置

JavaVMOption options[1];

 

//设置参考class文件或jar包所在目录,可以修改

options[0].optionString = "-Djava.class.path=.;D:\\javaClass";

...

...

// 指定对象的类定义(jclass)

jclass cls = NULL;

 

//获得一个实例对象

cls = env->FindClass("Person"); //获取指定对象的类定义(jclass) ,注意:Person是类名称,并且是.class文件中的类名称,而非.java文件中的,如果目录D:\javaClass目录下没有Person.class文件,而只有Person.java文件FindClass是找不到类的,因为其找的是.class文件中的类(即通过javac Person.java编译后的class文件)

备注:javap –s Person    //获取函数前面的方式,也是通过.class文件产生的,如果只有.java文件,该命令是不能执行成功的!

 

if(cls !=0)

{
mid = env->GetMethodID(cls,"<init>","()V"); //
调用类的默认构造函数的方法!第二个参数是固定的,表示调用构造函数!---不论类名是什么,都这么写?

if(mid!=0)

{
jobj=env->NewObject(cls,mid);
std::cout << "init ok " << mid << std::endl;
}

//获取函数id,获取静态方法id时要调用含static关键字的函数!--获取函数是通过类实现的,调用函数才用对象jobj

mid = env->GetStaticMethodID( cls, "main"); //读取要调用方法的定义(jmethodID)

//调用函数

env->CallVoidMethod(jobj,mid);//调用无参函数的方法,mainmain中可以无参的

 

square = env->CallIntMethod(jobj,mid,env->NewStringUTF(""),env->NewStringUTF("111"));//调用方法

 

 

参考:http://zhidao.baidu.com/question/256113643.html

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值