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
- ¿Cómo puedo importar ShowcaseView en Eclipse?
- Importar nuevo módulo Android para el módulo JellyRefreshLayout
- ¿Por qué no aparece el icono del cajón de navegación en la barra de acción?
- Cómo importar un proyecto en el repositorio de bitbucket de Android Studio?
- Android Studio de repente no puede resolver los símbolos
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
Y agregó una referencia a él usando el botón de "Agregar JARs …" en el camino de la estructura de Java de LibraryTest
La biblioteca aparece en las bibliotecas referenciadas en LibraryTest
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.
- La importación com.google.android.gms no se puede resolver
- ¿Cómo puedo insertar una base de datos SQLite en una aplicación?
- Necesario android.support.v4.app.fragment
- Cómo mantener un archivo jar externo, pero todavía uso de sus clases en mi proyecto de Android?
- Interfaz de importación json de Java para Android / Java
- ¿Cómo puedo mostrar contenido CSV específico en el elemento de la lista que se ha hecho clic?
- Error al importar los paquetes
- Quitar proyecto de Android Studio
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!
- OutOfMemoryException en el emulador
- Peer to peer android and iOS con Wifi directo (conectividad multipista?)