ClassNotFoundException dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:61)

Este error ha surgido algunas veces en Stackoverflow, haré referencia a otras preguntas en esta pregunta.

Mi proyecto es una aplicación para Android que utiliza el complemento de Android Maven para incluir bibliotecas, pero también incluye algunas bibliotecas localmente, ya que no se proporcionan a través de maven. Mi IDE es Eclipse. He utilizado este tutorial principalmente para configurarlo. Soy bastante nuevo en maven.

En resumen, no puedo iniciar la aplicación en mi teléfono. Al iniciarlo se me presenta el anterior Error escrito relativo a la actividad que es mi actividad de inicio denominada SubscriptionView . El error completo de seguimiento a continuación:

 07-17 15:47:42.170: E/AndroidRuntime(20071): FATAL EXCEPTION: main 07-17 15:47:42.170: E/AndroidRuntime(20071): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.dynamixsspbridge/com.example.dynamixsspbridge.SubscriptionView}: java.lang.ClassNotFoundException: com.example.dynamixsspbridge.SubscriptionView 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2034) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.access$700(ActivityThread.java:140) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.os.Handler.dispatchMessage(Handler.java:99) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.os.Looper.loop(Looper.java:137) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.main(ActivityThread.java:4921) 07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.reflect.Method.invokeNative(Native Method) 07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.reflect.Method.invoke(Method.java:511) 07-17 15:47:42.170: E/AndroidRuntime(20071): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) 07-17 15:47:42.170: E/AndroidRuntime(20071): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 07-17 15:47:42.170: E/AndroidRuntime(20071): at dalvik.system.NativeStart.main(Native Method) 07-17 15:47:42.170: E/AndroidRuntime(20071): Caused by: java.lang.ClassNotFoundException: com.example.dynamixsspbridge.SubscriptionView 07-17 15:47:42.170: E/AndroidRuntime(20071): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.Instrumentation.newActivity(Instrumentation.java:1068) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025) 07-17 15:47:42.170: E/AndroidRuntime(20071): ... 11 more 

Ahora, hay varias soluciones para esto sugerido:

  1. Comprobando si de hecho exporta bibliotecas privadas, vaya a "Build Path" -> "Configure Build Path …" 2. En la pestaña "Order and Export", active la opción "Android Private Libraries". trabajar." Tenía esa opción marcada, el error se produjo de todos modos.
  2. Asegúrese de que ProGuard no quita clases : Por lo que sé, no uso proguard. De lo que miro un tiene que utilizar activamente ProGuard, no sólo allí … No lo hice. (Dice "Tener ProGuard ejecutar es completamente opcional" en el sitio de Android .) He comprobado mi proyecto.properties y la línea proguard allí está comentado.
  3. No nombre la carpeta para sus bibliotecas externas lib pero libs . Lo he hecho para mis bibliotecas locales. Las bibliotecas de maven, por supuesto, viven donde Maven las pone. Potencialmente podría tomar todos estos frascos y ponerlos del repo de maven en libs … luego dejar de usar maven. Aunque esto puede funcionar, apenas presenta una solución.
  4. Quite libs dobles de la ruta de construcción . Esto es más o menos el mismo problema descrito en 3. Ahora bien, el punto aquí es, que "No se puede tener diferentes versiones de una sola biblioteca" . Se sabe que algunas bibliotecas proporcionan otras libs, por lo que uno podría estar en mi carpeta local y ser proporcionado por una de las librerías agregadas a través de maven. Incluyo dos bibliotecas a nivel local, una no es pública, por lo tanto, si se proporciona, sería android-support-v4.jar . He eliminado el tarro, he limpiado el proyecto y exportado de nuevo, sin cambios.
  5. Sugerencias se han hecho, que en realidad es un problema Eclipse. Reiniciar supuestamente podría ser útil, así que lo hice. En vano. Lo he probado con y sin borrar bin y gen carpeta.
  6. Errores de ortografía
  7. Utilizando el plugin m2e (ya haciendo eso)

Otras ideas que no funcionaron:

Versión Java: De las cosas que siento podría ser responsable si mi uso de Java 1.5. Sin embargo, mientras se recomienda 1.6, 1.5 debería funcionar. Cambiar a 1.6 tampoco cambia nada.

Las bibliotecas incluidas a través de Maven no se exportan / dexed: Otro problema que veo es que las dependencias de Maven no aparecen como bibliotecas dexed en la carpeta bin/dexedLibs . Aunque creo que esto va a ser un problema en un momento posterior he eliminado todas las clases que utilizan estas libs del proyecto y el error sigue siendo.

El problema es claramente relacionado con el uso de Maven. Si creo un proyecto nuevo, todo funciona bien hasta convertir el proyecto en un proyecto maven y añadir las bibliotecas a través de la pom.xml , incluso si no tengo clases usando ninguna de las bibliotecas.

EDITAR Investigación adicional: Al crear otro nuevo proyecto y se encontró que en el primer "right clock-> configure-> convert to maven" nada se importa incluso después de cambiar el pom.xml . Luego "deshabilitar la naturaleza de maven" y luego "convertir a maven" . Ahora todas las bibliotecas se importan y ahora se produce el error. Cuando pom.xml el pom.xml en el proyecto antes de convertir el mismo error se produce.

Curiosamente, si luego "right click-> maven-> desactiva la naturaleza de maven" y elimino todas las librerías y archivos de maven, el problema persiste.

Todo esto también sucede con un nuevo proyecto de muestra (sólo la actividad stanard y xml creado por eclipse) después de convertir a maven y las librerías maven están en el proyecto por lo que al parecer no está relacionado con mi código en absoluto …

El pom.xml ve así

  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>DynamixSSPBridge</groupId> <artifactId>DynamixSSPBridge</artifactId> <version>0.0.1-SNAPSHOT</version> <name>DynamixSSPBridge</name> <properties> <java-version>1.6</java-version> </properties> <repositories> <repository> <id>itm-maven-repository-releases-site</id> <url>https://maven.itm.uni-luebeck.de/content/repositories/releases/</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>2.3.3</version> <scope>provided</scope> </dependency> <dependency> <groupId>de.uniluebeck.itm</groupId> <artifactId>ncoap</artifactId> <version>1.0.1</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <sourceDirectory>src</sourceDirectory> <pluginManagement> <plugins> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>3.1.1</version> <extensions>true</extensions> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <configuration> <sdk> <platform>9</platform> </sdk> </configuration> </plugin> </plugins> </build> </project> 

Otra Idea fue crear un proyecto de maven con un arquetipo específico de Android como se describe aquí . Sin embargo, esto no parece funcionar ya que siempre obtengo un error "No puedo crear proyecto desde el arquetipo" (ver foto). Crear un proyecto de maven no androide fue otro mal intento, ya que no es un proyecto de Android que no resuelve las referencias de Rx y no dex bibliotecas …

Mensaje de error en eclipse

¿Algunas ideas?

He tenido el mismo problema. Te recomiendo que dependas únicamente de los comandos de maven y que no uses IDE para nada (excepto para de-buging), porque maven-android-plugin compila cosas a su manera.

Instalación de archivos jar locales

Puede instalar archivos jar de bibliotecas locales (que no están disponibles en línea para Maven) en su repositorio local:

Por ejemplo, aquí copiamos android.jar de 4.03 que no está disponible en línea, al repositorio local en nuestra máquina:

 mvn install:install-file \ -Dfile=$ANDROID_HOME/platforms/android-15/android.jar \ -DgroupId=com.google.android \ -DartifactId=android \ -Dversion=4.0.3 \ -Dpackaging=jar \ -DgeneratePom=true 

Ahora podemos incluirlo en POM:

  <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>${platform.version}</version> <scope>provided</scope> </dependency> 

Maven buscará en el repositorio local y usará estos archivos jar.

Establecer el alcance correcto

El problema de las clases que no se incluyen (en mi caso) fue causado por <scope> de dependencias en POM. Por lo tanto, para todas las dependencias de la biblioteca, establezca <scope> para compile .

Prueba a ejecutar mvn clean , mvn install y mvn:android deploy .

Su proyecto de Maven es bueno sólo cuando se puede ejecutar desde mvn línea de comandos sin ningún IDE o así.

  • No se encontraron artefactos que coincidan con el patrón de archivo "** / target / *. Apk"
  • Compartir código en Android Studio
  • Maven android plugin: No se puede encontrar una ruta de acceso a Android SDK
  • Configuración de Proguard para Android Support v4 22.2.0
  • Adición de dependencias de Maven a Gradle en Android Studio
  • Android Maven Eclipse todavía no puede importar apklib
  • Error al crear un proyecto de Android con Maven: nivel de plataforma / API 16 no disponible
  • ¿Por qué no son los SDK de Android SDK en cualquier repositorio de Maven?
  • Importar fanfarronería en el proyecto existente en Android Studio
  • Agrega el repositorio de maven a build.gradle
  • Maven archétype para un proyecto android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.