我想从我的JNI Android代码调用构造函数;但不知何故,它失败,以下例外.. 我相信我失去了一些非常小的东西;但我无法弄清楚......任何人都可以请指出?在JNI中调用构造函数失败Android

02-14 16:56:56.689: W/dalvikvm(397): JNI WARNING: JNI method called with exception raised

02-14 16:56:56.710: W/dalvikvm(397): in Lpv/ndk/Employee;.createWithAge (I)Lpv/ndk/Employee; (GetMethodID)

02-14 16:56:56.710: W/dalvikvm(397): Pending exception is:

02-14 16:56:56.710: I/dalvikvm(397): Ljava/lang/NoClassDefFoundError;: pv.ndk.Employee;

02-14 16:56:56.723: I/dalvikvm(397): at pv.ndk.Employee.createWithAge(Native Method)

02-14 16:56:56.740: I/dalvikvm(397): Caused by:

02-14 16:56:56.740: I/dalvikvm(397): Ljava/lang/ClassNotFoundException;: pv.ndk.Employee; in loader dalvik.system.PathClassLoader[/data/app/pv.ndk-2.apk]

这里是我的代码:

Employee类有2个构造函数,当我调用方法getAge()返回岁

Employee()

Employee(int age)

int getAge();

令人惊讶的方法..呼叫经过并提取年龄...但是,当我尝试调用“员工构造函数”,然后尝试getAge()这个异常抛出...

莫名其妙它无法找到类: 我尝试过使用GetObjectClass的所有可能性()

This works;当我通过呼叫中的Employee对象时

JNIEXPORT jint JNICALL Java_pv_ndk_Employee_getAgeC(JNIEnv *env, jobject callingObject, jobject employeeObject)

{

jclass employeeClass = env->GetObjectClass(employeeObject);

jmethodID midGetName = env->GetMethodID(employeeClass, "getAge", "()I");

int age = env->CallIntMethod(employeeObject, midGetName);

//other code

}

这是行不通的;我不知道为什么它不能找到类。 我试过用“Lpv/ndk/Emploee”“LEmployee”“pv/ndk/Employee”..甚至用以下方法尝试:

jclass localRefCls = env->FindClass("pv/ndk/Employee");

jclass clazzEmployee = (_jclass*)env->NewGlobalRef(localRefCls);

JNIEXPORT jobject JNICALL Java_pv_ndk_Employee_createWithAge(JNIEnv *env, jobject callingObject, jint age) {

jclass employeeClass = env->FindClass("pv/ndk/Employee");

jmethodID midConstructor = env->GetMethodID(employeeClass, "", "(I)V"); // BOOM SCREWED HERE .. !!

}

但每次我的代码来env->的GetMethodID - 虚拟机中止...

2012-02-15

Pranav

+0

你可以检查employeeClass变量是否不为NULL? –

2012-02-15 03:48:19

+0

我不明白你的第二个代码片段。 localRefCls有什么范围,什么时候分配? –

2012-02-15 16:55:08

+0

@Martins:employeeClass不为NULL –

2012-02-18 01:35:37

android+jni+构造函数,在JNI中调用构造函数失败Android相关推荐

  1. (c++)5.4构造函数和析构函数中调用虚函数

    在构造函数和析构函数中调用虚函数时,采用静态联编(他们所调用的虚函数是自己类中定义的函数) 如果在自己类中没有实现这个虚函数,则调用的是基类中的虚函数,绝不会是任何在派生类中重定义的虚函数 //构造函 ...

  2. C++核心准则C.82:不要在构造函数或析构函数中调用虚函数

    C.82: Don't call virtual functions in constructors and destructors C.82:不要在构造函数或析构函数中调用虚函数 Reason(原因 ...

  3. C++经验(四)-- 基类构造函数和析构函数中调用virtual虚函数?

    class Base {public:Base();virtual void oneFunction() = 0;... };Base::Base() {...oneFunction(); }clas ...

  4. 解决 conda 环境中调用 python 失败的问题

    解决 conda 环境中调用 python 失败的问题 问题描述 问题1 解决办法 问题2 解决办法 解决问题1 的对比操作 切换环境的正常命令流程 不退出次级环境导致执行python出错的命令流程 ...

  5. C++中最好不要在构造函数和析构函数中调用虚函数!!!

    1.最好不要在基类和派生类的构造和析构函数中调用虚函数,不会出现多态性 实例如下: #include "iostream"using namespace std;class Bas ...

  6. C++在构造函数中调用构造函数

    为什么80%的码农都做不了架构师?>>>    C++如何在一个构造函数中调用另一个构造函数,在一篇博文中看到了这样的一道题: #include <stdlib.h> # ...

  7. 构造函数中调用构造函数new和delete使用小结

    malloc free 是C语言的函数 new delete 是C++的操作符 #include "iostream" using namespace std;//构造中调用构造是 ...

  8. C++学习笔记-----不要在构造函数和析构函数中调用虚函数

    考虑下面的程序: #include <iostream> using namespace std;class Base { public:Base() { cout << &q ...

  9. C++中最好不要在构造函数和析构函数中调用虚函数

    1.最好不要在基类和派生类的构造和析构函数中调用虚函数,不会出现多态性 实例如下: #include "iostream"using namespace std;class Bas ...

最新文章

  1. 什么水平能做java中级工程师,挑战大厂重燃激情!
  2. 【OpenCV 例程200篇】44. 图像的灰度变换(伽马变换)
  3. JS常用的设计模式(2)——简单工厂模式
  4. static在内存层面的作用_static关键字总结
  5. 1024 科学计数法
  6. LTE:资源调度(5)
  7. 基于开源SDN控制器的下一代金融云网络的研究与实践
  8. 数据库安全关键技术之数据库脱敏技术详解
  9. c4d怎么导入图片描图建模_C4D:你一定想知道的线描效果制作方法
  10. Excel如何快速删除图片背景?
  11. 小猫钓鱼纸牌游戏java_小猫钓鱼游戏-关于扑克牌的游戏规则请问小猫钓鱼这种玩法的 – 手机爱问...
  12. RxSwift学习笔记
  13. 弗洛伊德算法(求每一对顶点间的最短路径)
  14. To B产品用研工作,到底在研究什么?
  15. DSP CCS12.00 芯片:TMS320F28335 ADC 的运用
  16. 用机器学习识别随机生成的CC域名
  17. 服务器端部署营业执照识别
  18. 从U_I_C去H_K_B_U 上课那些事儿
  19. 今日头条——青龙羊毛
  20. 天干地支计算年月日时

热门文章

  1. 拜占庭将军问题与中本聪
  2. 用正则表达式匹配网址URL中最后一个反斜杠/后面的内容
  3. 【web安全】Spring Boot eureka xstream 反序列化
  4. vbs枚举磁盘访问磁盘信息
  5. Markdown编辑器写博客
  6. 图的邻接矩阵存储和邻接表存储定义方法
  7. 1362. 健康的荷斯坦奶牛【难度: 一般 / 二进制枚举】
  8. 1056 Mice and Rice (25 分)【难度: 一般 / 知识点: 模拟】
  9. 自动化测试框架搭建-邮件-5
  10. Java集合Vector