2012-04-18 12 views
1

可能性の重複:アンドロイドでJNIEnv-> FindClassが()はJNI_OnLoadをして失敗し


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

は、私が実行して、ネイティブの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クラスを見ることができないのはなぜですか?

別のテストアプリケーションでこの同じライブラリを使用していますが、これは動作します(ライブラリが動作すると確信しています)。なぜ私は1つのアプリがJavaクラスを見つけることができないのか、他のアプリはできないのか分かりません。

+0

'COM /テスト/アンドロイド/ aclass'クラスが定義されています。私はここに解決策を見つけた

?プロジェクト自体の中か、混在しているjarファイルですか? – Femi

+0

プロジェクト自体です。 – bubba

+0

良い記事 - リンクありがとう。しかし、私の問題はproguard.cfgでした。私がプロガードを無効にしたとき、今は働いています。 – bubba

答えて

関連する問題