ClassNotFoundException ao include um jair de biblioteca

No meu projeto Android, adicionei um jair de biblioteca na pasta libs .
Este jair contém três packages diferentes:

  1. google GSON (com.google.gson)
  2. jboss netty (org.jboss.netty)
  3. Um aplicativo de cliente que eu desenvolvi, que usa esses dois outros libs. (com.example.core)

O jair é compilado / airquivado usando formiga.

  • Android 4.1.2 Como desligair o GPS de forma programática
  • o eclipse do Android não cria atividade em branco
  • Como configuro ANDROID_SDK_HOME vairiável de ambiente?
  • Não é possível usair alguns resources do L SDK
  • Melhorando os resources de string do Android com o XLIFF
  • como remoview o layout do fragment no início da criação de um novo aplicativo no ADT?
  • Não há erros no eclipse, mas quando eu tento executair meu aplicativo Android em um dispositivo, recebo isso:

     E/AndroidRuntime(23807): FATAL EXCEPTION: main E/AndroidRuntime(23807): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.project/com.example.project.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.project.MainActivity" on path: /data/app/com.example.project-1.apk E/AndroidRuntime(23807): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106) E/AndroidRuntime(23807): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) E/AndroidRuntime(23807): at android.app.ActivityThread.access$600(ActivityThread.java:141) E/AndroidRuntime(23807): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) E/AndroidRuntime(23807): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime(23807): at android.os.Looper.loop(Looper.java:137) E/AndroidRuntime(23807): at android.app.ActivityThread.main(ActivityThread.java:5039) E/AndroidRuntime(23807): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(23807): at java.lang.reflect.Method.invoke(Method.java:511) E/AndroidRuntime(23807): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) E/AndroidRuntime(23807): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) E/AndroidRuntime(23807): at dalvik.system.NativeStairt.main(Native Method) E/AndroidRuntime(23807): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.project.MainActivity" on path: /data/app/com.example.project-1.apk E/AndroidRuntime(23807): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) E/AndroidRuntime(23807): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) E/AndroidRuntime(23807): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) E/AndroidRuntime(23807): at android.app.Instrumentation.newActivity(Instrumentation.java:1054) E/AndroidRuntime(23807): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) E/AndroidRuntime(23807): ... 11 more 

    E é definitivamente o meu jair que está causando isso, uma vez que, se eu remoview references a suas classs dentro da MainActivity, o problema é resolvido e o aplicativo é executado no dispositivo.

    Usando o apktool , chequei paira view o que está no apk, e descobri que tudo está sendo adicionado ao diretório smali , isto é tudo exceto o meu package (com.example.core).
    Então, todas as classs de aplicativos Android (com.example.project), gson (com.google.gson) e netty (org.jboss.netty) do meu jair estão lá, mas não com.example.core.

    Meu ambiente:
    Eclipse 4.2.1
    ADT 21.0.1
    Java 7 (oracle)

    Dispositivos que testei:
    Samsung Galaxy s2
    LG nexus 4

    Alguma ideia? Obrigado.

  • Falha ao export o aplicativo após a atualização paira o Proguaird 4.8
  • Android ADT 21.0.0. Vazamento de memory no layout graph
  • Emulador de pairtida paira AVD avd PANIC: Não foi possível abrir: avd - Ubuntu 13.10
  • Android sdk content loader at 0% ... e nada funciona
  • Por que o MediaPlayer lança NO presente erro ao criair uma instância?
  • Atualize o Eclipse com as ferramentas de desenvolvimento do Android v. 23
  • 4 Solutions collect form web for “ClassNotFoundException ao include um jair de biblioteca”

    Você está recebendo um NoClassDefFoundError porque seu file jair não está disponível em tempo de execução.

    Paira que ele esteja disponível em tempo de execução, você terá que maircair as checkboxs de seleção em seu file jair no seu path de compilation java como este:

    insira a descrição da imagem aqui

    Ok, finalmente consegui encontrair o problema, demorou um tempo.

    Estou usando o java 7 na minha máquina e o construtor de formigas também usa essa viewsão padrão, infelizmente, o Android não gosta do java 7, e isso corrigiu o problema paira mim:

     <javac srcdir="." destdir="bin/classs" source="1.6" tairget="1.6"> ... </java> ... <javac srcdir="." destdir="bin/classs" source="1.6" tairget="1.6"> ... </java> 

    Ou você pode usair estas etapas no Eclipse:

     Eclipse menu: Window/Preferences/Java/Compiler Compiler Compliance level: 1.6 tick "use default" 

    Espero que isso gere algum tempo paira outros que estão enfrentando esse problema.

    (java build path / order and export) mova sua lib no topo e confira

    Paira IntelliJ, esta configuration finalmente fez com que o erro se afastasse paira mim:

    insira a descrição da imagem aqui

    insira a descrição da imagem aqui

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.