android+jni+构造函数,在JNI中调用构造函数失败Android
我想从我的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相关推荐
- (c++)5.4构造函数和析构函数中调用虚函数
在构造函数和析构函数中调用虚函数时,采用静态联编(他们所调用的虚函数是自己类中定义的函数) 如果在自己类中没有实现这个虚函数,则调用的是基类中的虚函数,绝不会是任何在派生类中重定义的虚函数 //构造函 ...
- C++核心准则C.82:不要在构造函数或析构函数中调用虚函数
C.82: Don't call virtual functions in constructors and destructors C.82:不要在构造函数或析构函数中调用虚函数 Reason(原因 ...
- C++经验(四)-- 基类构造函数和析构函数中调用virtual虚函数?
class Base {public:Base();virtual void oneFunction() = 0;... };Base::Base() {...oneFunction(); }clas ...
- 解决 conda 环境中调用 python 失败的问题
解决 conda 环境中调用 python 失败的问题 问题描述 问题1 解决办法 问题2 解决办法 解决问题1 的对比操作 切换环境的正常命令流程 不退出次级环境导致执行python出错的命令流程 ...
- C++中最好不要在构造函数和析构函数中调用虚函数!!!
1.最好不要在基类和派生类的构造和析构函数中调用虚函数,不会出现多态性 实例如下: #include "iostream"using namespace std;class Bas ...
- C++在构造函数中调用构造函数
为什么80%的码农都做不了架构师?>>> C++如何在一个构造函数中调用另一个构造函数,在一篇博文中看到了这样的一道题: #include <stdlib.h> # ...
- 构造函数中调用构造函数new和delete使用小结
malloc free 是C语言的函数 new delete 是C++的操作符 #include "iostream" using namespace std;//构造中调用构造是 ...
- C++学习笔记-----不要在构造函数和析构函数中调用虚函数
考虑下面的程序: #include <iostream> using namespace std;class Base { public:Base() { cout << &q ...
- C++中最好不要在构造函数和析构函数中调用虚函数
1.最好不要在基类和派生类的构造和析构函数中调用虚函数,不会出现多态性 实例如下: #include "iostream"using namespace std;class Bas ...
最新文章
- 什么水平能做java中级工程师,挑战大厂重燃激情!
- 【OpenCV 例程200篇】44. 图像的灰度变换(伽马变换)
- JS常用的设计模式(2)——简单工厂模式
- static在内存层面的作用_static关键字总结
- 1024 科学计数法
- LTE:资源调度(5)
- 基于开源SDN控制器的下一代金融云网络的研究与实践
- 数据库安全关键技术之数据库脱敏技术详解
- c4d怎么导入图片描图建模_C4D:你一定想知道的线描效果制作方法
- Excel如何快速删除图片背景?
- 小猫钓鱼纸牌游戏java_小猫钓鱼游戏-关于扑克牌的游戏规则请问小猫钓鱼这种玩法的 – 手机爱问...
- RxSwift学习笔记
- 弗洛伊德算法(求每一对顶点间的最短路径)
- To B产品用研工作,到底在研究什么?
- DSP CCS12.00 芯片:TMS320F28335 ADC 的运用
- 用机器学习识别随机生成的CC域名
- 服务器端部署营业执照识别
- 从U_I_C去H_K_B_U 上课那些事儿
- 今日头条——青龙羊毛
- 天干地支计算年月日时