1

可能重复:
如何在 Android 上的 C 中加载我自己的 Java 类?
应用程序在 Eclipse 中调试/运行,但 .APK 在解析包含自定义视图的 XML 布局时会给出 .classNotFoundException

在 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 类,而另一个不能。

4

1 回答 1

0

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

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

于 2012-04-20T02:34:06.790 回答