Android, clase no encontrada en el archivo jar importado

Incluí un archivo jar en mi proyecto de Android como se explica en ¿Cómo puedo utilizar JAR externos en un proyecto de Android? . Con los dos métodos descritos por MannyNS y Vinayak B. en este post recibo el error "No se pudo encontrar la clase 'test.libraryCalc.Calc" que es la clase proporcionada por la biblioteca. El código siguiente ilustra el problema:

Clase de ejemplo proporcionada a través de la biblioteca: Calc.java

package test.libraryCalc; public class Calc { public int add(int a, int b){ return a + b; } } 

LibraryTestActivity.java

 package test.library; import test.libraryCalc.Calc; import android.app.Activity; import android.os.Bundle; public class LibraryTestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Calc calc = new Calc(); int c = calc.add(3, 4); } } 

He exportado el archivo jar que contiene Calc.java a LibraryTest \ libs \ calc.jar

Introduzca aquí la descripción de la imagen

Y agregó una referencia a él usando el botón de "Agregar JARs …" en el camino de la estructura de Java de LibraryTest

Introduzca aquí la descripción de la imagen La biblioteca aparece en las bibliotecas referenciadas en LibraryTest

Introduzca aquí la descripción de la imagen

LibraryTest no tiene problemas de compilación, pero al ejecutarlo en el emulador se muestra lo siguiente en LogCat:

 12-27 14:01:33.965: E/dalvikvm(747): Could not find class 'test.libraryCalc.Calc', referenced from method test.library.LibraryTestActivity.onCreate 12-27 14:01:33.965: W/dalvikvm(747): VFY: unable to resolve new-instance 13 (Ltest/libraryCalc/Calc;) in Ltest/library/LibraryTestActivity; 12-27 14:01:33.995: D/dalvikvm(747): VFY: replacing opcode 0x22 at 0x0008 12-27 14:01:33.995: D/dalvikvm(747): VFY: dead code 0x000a-0013 in Ltest/library/LibraryTestActivity;.onCreate (Landroid/os/Bundle;)V 12-27 14:01:34.065: D/AndroidRuntime(747): Shutting down VM 12-27 14:01:34.065: W/dalvikvm(747): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 12-27 14:01:34.075: E/AndroidRuntime(747): FATAL EXCEPTION: main 12-27 14:01:34.075: E/AndroidRuntime(747): java.lang.NoClassDefFoundError: test.libraryCalc.Calc 12-27 14:01:34.075: E/AndroidRuntime(747): at test.library.LibraryTestActivity.onCreate(LibraryTestActivity.java:14) 12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 12-27 14:01:34.075: E/AndroidRuntime(747): at android.os.Handler.dispatchMessage(Handler.java:99) 12-27 14:01:34.075: E/AndroidRuntime(747): at android.os.Looper.loop(Looper.java:123) 12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.ActivityThread.main(ActivityThread.java:4627) 12-27 14:01:34.075: E/AndroidRuntime(747): at java.lang.reflect.Method.invokeNative(Native Method) 12-27 14:01:34.075: E/AndroidRuntime(747): at java.lang.reflect.Method.invoke(Method.java:521) 12-27 14:01:34.075: E/AndroidRuntime(747): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 12-27 14:01:34.075: E/AndroidRuntime(747): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 12-27 14:01:34.075: E/AndroidRuntime(747): at dalvik.system.NativeStart.main(Native Method) 12-27 14:06:34.170: I/Process(747): Sending signal. PID: 747 SIG: 9 

¿Qué se necesita hacer para que esto funcione? Gracias por todas las sugerencias.

Creo que el problema es que intenta agregar jar que contiene el código de Android. No puedes hacer esto. Para incluir el código de Android, debe crear una biblioteca de Android. Simplemente cree un proyecto de Android y en la sección de Android de proyecto-propiedades establezca que este es un proyecto de biblioteca. Después de eso, podrá agregar esta biblioteca a sus proyectos. Para obtener más información sobre las bibliotecas de Android, puede leerlas aquí .

Actualización : He intentado su código ahora. Funciona en mi caso. La única diferencia que he hecho es durante la exportación de Jar He comprobado la exportación de archivos de origen Java y recursos. Espero que esto te ayudará. ¡Intentalo!

  • ¿Dónde puedo obtener un JAR para importar libcore.io?
  • Gestión de la sesión de inicio de sesión de facebook sdk en android
  • ¿Cómo usar un proyecto de Android Studio en dos computadoras?
  • Eclipse no Reconociendo cualquier importación
  • Integración de Zbar en la aplicación para Android
  • ¿Cómo transferir un programa Java existente a Android? (Qué importar)
  • ¿Cómo puedo crear una base de datos SQLite en Android mediante la importación de un archivo SQL?
  • ¿Es una buena práctica de programación usar campos estáticos de importación?
  • Base de datos de exportación de importación android
  • MoPub problema de importación, sé que estoy sólo falta algo estúpido
  • Android: error de heap importando ShowcaseView como proyecto, ClassNotFound si como JAR, Fuera de memoria
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.