2010-02-27 15 views
22

Tengo dos proyectos de Android, ProjA requiere ProjB (en Propiedades de Eclipse> Ruta de compilación de Java> Proyectos> Agregar> ProjB). Cada cosa compila bien en Eclipse, pero cuando corro proja me sale un error:No se pudo encontrar el método XXX, al que se hace referencia desde el método YYY

Could not find method XXX, referenced from method YYY.

donde XXX - es el método de ProjB.

¿Cómo puedo corregir la configuración?

+0

Simplemente se topó con esta misma situación, incluidos los errores de tipo classp en el tiempo de ejecución cuando se inició la aplicación. Solución: ¡agregue la carpeta fuente del proyecto de la biblioteca a la ruta de compilación! –

+0

¡Tengo el mismo problema! Y lo he intentado TODO: agregar una referencia de Proyecto (como lo sugiere Commonsware), crear un JAR-fil e importarlo a ProjA, ¡nada funciona! – Ted

+1

Tiene dos opciones. 1) Haga ProjB la llamada "Biblioteca Android" (vea la respuesta aceptada) 2) Si ProjB no tiene recursos (diseños, dibujos, etc.), entonces puede hacer un proyecto Java común (no Android) y agregar el android.jar como jar externo en la pestaña Libraries en eclipse, y eliminar JRE de la misma pestaña ... El android.jar se puede encontrar en una ruta como esta: C: \ android-sdk-windows \ platforms \ android-3 \ android.jar – alex2k8

Respuesta

1

Combina los dos proyectos en uno solo.

O bien, haga que ProjB cree un archivo JAR que incluya ProjA.

O, convierta ProjB en un Servicio remoto, con el método en cuestión expuesto a través de AIDL, y haga que ProjA se vincule a ese servicio para usar el método.

+0

Como se señaló anteriormente, ninguna de estas sugerencias funciona. Sigo recibiendo el error anterior de un error NoClassDefFound. Pero en tiempo de compilación, todo se ve bien ... lo he limpiado, reiniciado, etc. ... nada funciona. – Ted

1

Es posible que desee ver su diseño, si no quiere ir con la respuesta de CommonsWare.

Por ejemplo, puede llamar al segundo proyecto desde el primero utilizando Intents, por ejemplo.

Si hay un código que es común para los dos proyectos, puede incluirlo en un nuevo proyecto donde puede incluir los archivos directamente en ambos proyectos, pero si se supone que deben trabajar juntos, existen diferentes formas en Android para permitir que las Actividades se llamen entre sí o pasen información, y es posible que desee verlas.

34

Tengo un problema similar cuando uso un contenedor externo (en mi caso openCSV). La razón por la que tuve un problema fue debido a un cambio en ADT 17 (o superior). Lo que tenía que hacer para resolver el problema era

  1. En Eclipse vaya a Propiedades - ruta> Java build -> Orden y exportación.
  2. Marcar mi jar.
  3. Mueva el jarro a la parte superior de la lista.

La solución fue encontrada in the following page que hace referencia a un artículo muy bueno.

+0

Esto funcionó para mí, gracias – celoftis

+1

Cheers, al principio pensé que no tenía nada que ver con mi proyecto externo. ¡El error decía que la clase X no podía ser encontrada por el método Y sin embargo, el método Y se encontró en la clase X! Estaba pensando ¿cómo puede el método X.Y() no saber sobre la clase de la que proviene? Luego me di cuenta de que el método X.Y() interactuaba de hecho con algunas estructuras de datos que vinieron de un proyecto externo. Así que fui a Order and Export y moví las bibliotecas privadas de Android a la cima y ¡voilá! Sin embargo, para cualquier espectador, si no cree que otro proyecto está involucrado, ¿está seguro? – mgibson

+1

+1 Juro que la codificación de aplicaciones de Android será imposible sin SO. – Sydwell

0

que he experimentado este problema con el nuevo Android construir Gradle sistema, lo arreglé ejecutando gradle clean y luego construyendo e instalando de nuevo. Los sistemas de compilación son bestias complejas y Google todavía tiene que resolver el problema de la dependencia a la perfección.

Cuestiones relacionadas