Añadir jar externo al proyecto android en eclipse

Estoy construyendo un sencillo proyecto de Android en eclipse que usa el google-api-java-client . Estoy intentando seguir este tutorial para ponerlo en funcionamiento. He buscado en SO respuestas sobre cómo agregar JARs a un proyecto de Android en Eclipse. La mayoría de ellos recomiendan agregar los JARs a la lib/ carpeta dentro del proyecto de Android, y luego agregar los JARs a la ruta de construcción del proyecto. He hecho estas dos cosas. El proyecto compila bien (en cualquier caso, Eclipse no se queja de errores). Pero cuando ejecuto la aplicación de Android en mi emulador, obtengo ClassDefNotFoundError siempre que intento instanciar cualquier clase en el JAR google-api-java-client . Por ejemplo

 new com.google.api.client.http.apache.ApacheHttpTransport(); 

Aumenta ClassDefNotFoundError .

Aquí está el código que causa el error:

 package com.mycom.android; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; public class SearchRunner implements OnClickListener { private static final String API_KEY = "AIzaSyA1Mg3xWXfoov4HdPUzYY2NwTxuvCev1-E"; private static final String PLACES_SEARCH_URL = ""; @Override public void onClick(View v) { EditText editText = (EditText) v; String searchText = editText.getText().toString(); runSearch(searchText); } protected void runSearch(String searchText) { new com.google.api.client.http.apache.ApacheHttpTransport(); } } 

Aquí hay una salida más completa de Eclipse LogCat:

 12-21 15:42:11.402: E/dalvikvm(3412): Could not find class 'com.google.api.client.http.apache.ApacheHttpTransport', referenced from method com.mycom.android.SearchRunner.runSearch 12-21 15:42:11.402: W/dalvikvm(3412): VFY: unable to resolve new-instance 70 (Lcom/google/api/client/http/apache/ApacheHttpTransport;) in Lcom/mycom/android/SearchRunner; 12-21 15:42:11.402: D/dalvikvm(3412): VFY: replacing opcode 0x22 at 0x0000 12-21 15:42:11.402: D/dalvikvm(3412): DexOpt: unable to opt direct call 0x00ca at 0x02 in Lcom/mycom/android/SearchRunner;.runSearch 12-21 15:42:11.682: I/MapActivity(3412): Handling network change notification:CONNECTED 12-21 15:42:11.682: E/MapActivity(3412): Couldn't get connection factory client 12-21 15:42:11.791: D/gralloc_goldfish(3412): Emulator without GPU emulation detected. 12-21 15:42:12.532: D/dalvikvm(3412): GC_CONCURRENT freed 102K, 3% free 10520K/10823K, paused 5ms+7ms 12-21 15:42:18.422: D/AndroidRuntime(3412): Shutting down VM 12-21 15:42:18.422: W/dalvikvm(3412): threadid=1: thread exiting with uncaught exception (group=0x409951f8) 12-21 15:42:18.482: E/AndroidRuntime(3412): FATAL EXCEPTION: main 12-21 15:42:18.482: E/AndroidRuntime(3412): java.lang.NoClassDefFoundError: com.google.api.client.http.apache.ApacheHttpTransport 12-21 15:42:18.482: E/AndroidRuntime(3412): at com.mycom.android.SearchRunner.runSearch(SearchRunner.java:20) 

3 Solutions collect form web for “Añadir jar externo al proyecto android en eclipse”

Solucioné el problema siguiendo estas instrucciones paso a paso. Cuando inicialmente comencé a configurar el proyecto:

  1. Importé los archivos JAR del proyecto google-api-java-client en la lib/ folder de mi proyecto
  2. I derecho-chascado lib/google-api-client... y la trayectoria seleccionada de la estructura> agrega al camino de la estructura

En este punto, en Eclipse, un montón de bibliotecas aparecen bajo la sección "Bibliotecas referenciadas" de mi proyecto:

 jsr305-1.3.9.jar gson-1.7.1.jar guava-r09.jar junit-4.8.2.jar httpclient-4.0.3.jar httpcore-4.0.1.jar commons-logging-1.1.1.jar commons-codec-1.3.jar jackson-core-asl-1.9.1.jar xpp3-1.1.4c.jar protobuf-java-2.2.0.jar google-http-client-1.6.0-beta.jar google-oauth-client-1.6.0-beta.jar google-api-client-1.6.0-beta.jar 

Sin embargo, cuando fui a Proyecto> Propiedades> Java Build Path> Bibliotecas, vi que sólo google-api-client... fue listado. Cuando intenté funcionar el proyecto, conseguí el NoClassDefFounError para ApacheHttpTransport , como mencionado en el poste original. Esto es porque esa clase se define en google-http-client !. Mediante la adición manual de google-http-client a la ruta de construcción, se resuelve el problema.

Lección aprendida: el hecho de que un JAR aparezca en la lista de referencias de un proyecto de Eclipse no significa que esos JAR estén incluidos en la ruta de construcción del proyecto.

Quizás las importaciones? Ctrl + shift + o hace algo?

Si no, no estoy seguro de que debe instanciar la clase buena, con este error

Si coloca el / los tarro / s en la carpeta lib y agrega el proyecto a la ruta de construcción (sección de propiedades de tu proyecto, Eclipse se limpia y se construye después) Deberías ver el archivo jar en uso tal como aparecerá en las "librerías" Bajo la biblioteca de Android.

Para hacer referencia use import some.package.com. Como dice letroll, ctrl + shift + o debe ordenar las importaciones para usted.

  • Incluir proyecto Java como biblioteca
  • ¿Por qué Android Lint advierte sobre String.format usando la configuración regional predeterminada cuando utiliza explícitamente Locale.US?
  • No se pudo encontrar com.google.android.gms: play-services: 5.0.77
  • Proguard parecen eliminar un paquete completo que se incluye en el camino
  • Bitbucket: envía los archivos de proyecto a un repositorio Git vacío
  • Hacer eclipse depurar mi androide PROYECTO
  • NoClassDefFoundError desarrollo de biblioteca con aplicaciones para Android, Maven y Eclipse
  • Uso del proyecto de Android con Team Foundation Server 2010 y ramificación. ¿Hay alguna forma más simple?
  • Android Eclipse: ¿Cuál es la forma más fácil de duplicar una clase?
  • Instalación del complemento de Android NDK en eclipse SDK
  • Mover la aplicación al teléfono
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.