JNIEnv-> FindClass()在JNI_OnLoad中失败

时间:2012-04-18 05:08:50

标签: android java-native-interface

  

可能重复:
  How do I load my own Java class in C on Android?
  Application works in debug / run from Eclipse, but .APK gives .classNotFoundException when parsing XML layout that contains a custom View

在Android中,我通过执行以下操作访问本机C库:

System.loadLibrary("testlib");

加载本机库。 在JNI_OnLoad()函数中,它试图找到Java粘合代码类:

JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {
        JNIEnv *env;
        jclass k;
        jint r;

        r = vm->GetEnv ((void **) &env, JNI_VERSION_1_4);
        k = env->FindClass ("com/test/android/aclass");

FindClass()失败,并抛出NoClassDefFoundError异常。 知道为什么我不能从我的C代码中看到我的Java类吗?

我在另一个测试应用程序中使用相同的库,它可以工作(所以我相信库工作)。我不明白为什么一个应用程序可以找到java类,而另一个不能。

1 个答案:

答案 0 :(得分:0)

找到答案。
我的线索是,如果我通过eclipse运行它会运行正常,并且在创建.apk文件时只有这个问题。

我在这里找到了解决方案:Application works in debug / run from Eclipse, but .APK gives .classNotFoundException when parsing XML layout that contains a custom View