2011-05-29 15 views
31
  1. Hice un proyecto de Android y lo ejecuté. Funcionó con éxito.
  2. Desarrollé un servicio web en Java y lo organicé. Funcionó con éxito.
  3. Exporté el servicio web en .jar y lo agregué a mi proyecto de Android.
  4. Cuando intento llamar a un método en el servicio web, aparece un error Unable to resolve superclass.

Mi registro de errores:No se pudo resolver el error de la superclase al hacer referencia a la biblioteca .jar

Unable to resolve superclass of Lweb/service/RandomWordGeneratorService; (73) 
Link of class 'Lweb/service/RandomWordGeneratorService;' failed 
Could not find class 'web.service.RandomWordGeneratorService', 
    referenced from method tam.miru.Login$1.onClick 
VFY: unable to resolve new-instance 110 Lweb/service/RandomWordGeneratorService;) 
    in Ltam/miru/Login$1; 
VFY: replacing opcode 0x22 at 0x005a  
VFY: dead code 0x005c-006e in Ltam/miru/Login$1;.onClick (Landroid/view/View;) 

Respuesta

71

no empieza a este problema después de actualizar a ADT 17.

descubierto que los archivos .jar externos tienen que estar en un 'libs' (con una s) carpeta de otro modo sus clases no están incluidos en el .dex archivo que se crea. Antes de la actualización todo funcionaba bien con mis archivos .jar en una carpeta 'lib' (no s).

+4

Más información [aquí] (https://plus.google.com/u/0/109385828142935151413/posts/RL91VJd1yti) – rabidgremlin

+0

Muchas gracias !!! – XXX

+2

Gracias ... google ... . :( – fvisticot

2

¿Está utilizando eclipse? De ser así, ¿ha agregado la biblioteca a la ruta de compilación como se describe en Adding a library/JAR to an Eclipse Android project?

+0

sí, creé el jar de la aplicación Java del servicio web y lo agregué como ADD EXTERNAL JAR – sakthi

+0

Es el servicio web.Clase RandomWordGeneratorService definida en el JAR? –

+0

sí :(y también creé una carpeta de libs como en el enlace y coloqué mi tarro allí. Aún consigo el mismo error :( – sakthi

4

Crear carpeta lib, la carpeta libs es para bibliotecas nativas. ¡Lo hice, agregué la biblioteca a lib y construir ruta como biblioteca interna y funciona!

+0

gracias, funcionó para mí :) –

+0

Yo también. ¡Gracias! –

-1

Me encontré con una causa diferente para este error en Eclipse. Estaba experimentando con poner espacios de trabajo de eclipse en los directorios de Google Drive y descubrí que ciertas superclases no pueden resolverse desde las actividades de Android.

Pause Google Drive y todo comenzó a funcionar bien. En mi caso, la superclase que no se cargaría era de una clase generada por los búfers de protocolo. Esta clase y todas las demás que probé funcionaron bien en programas java que no eran de Android, incluso cuando Google Drive se estaba ejecutando.

2

Sé que esta es una publicación en un hilo muy viejo, pero después de leer la respuesta de @rabidgremlin, verifiqué la estructura de la carpeta y encontré que ya estaba en "libs". Sin embargo, al ver el archivo support.jar, pensé que usar esto era lo que estaba causando el problema.

Estaba extendiendo "FragmentActivity" pero resulta que estaba haciendo referencia al support.jar, que tenía problemas en sí mismo. Una vez que eliminé la cláusula extends, la aplicación dejó de fallar milagrosamente.

Solo un FYI en caso de que alguien venga. ¡Aclamaciones!

14

En mi caso tuve que ir al Properties->Java Build Path->Order and Export y marcar , luego limpié el proyecto y funcionó bien.

1

Tuve el mismo problema, traté de marcar las bibliotecas privadas de Android bajo Ordenar y Exportar y no funcionó para mí. Luego noté que mi carpeta libs no estaba referenciada en Java Build Path. Así que solo lo agregué a Bibliotecas y funcionó.

1

Tuve el mismo mensaje de error. Me tomó algo de tiempo resolver el problema: Android requiere Java 1.6 para funcionar. Y la superclase de mi actividad implementó una interfaz de un proyecto Java que tenía Java 1.7 como compilador. Eso fue suficiente para que el constructor de dex no pueda vincular la superclase y esto dio como resultado la excepción de clase no encontrada.

Cuestiones relacionadas