Proyecto de referencia (puro java) en el proyecto de Android (No se pudo encontrar la clase)
Estoy tratando de hacer referencia a un puro java-Proyecto en mi Android-Proyecto -> El proyecto de Java tiene un montón de clases que tengo que usar. Oh, y como la primera respuesta señaló: Estoy usando eclipse, sí 🙂
El único problema es: Siempre consigo No podría encontrar la clase 'XXX', referenciada desde el método com.example.helloworld.MainActivity.onCreate. Parece que me he perdido algún paso o error …?
Lo que ya hice:
- El Proyecto se agrega como Proyecto al Camino de Construcción de Java (lógicamente nessecary)
- Está marcado en "Orden y exportación" en el Camino de construcción de Java y empujado a la parte superior (esto resuelto el problema de alguien más aquí cuando se trata de Jar-archivos)
- Ir está marcado en "Referencias del proyecto" en la configuración del proyecto.
- He añadido la carpeta donde la clase correspondiente está en "Bibliotecas" en la construcción de Ruta … No estoy seguro si eso debería ser nessecary.
La referencia de Java-Project I tiene una carga completa de tarros, pero si esa es la razón, ¿no debo obtener un mensaje de error diferente?
- NoClassDefFoundError debajo de SDK 21
- Error de Eclipse: NoClassDefFoundError: java / lang / ref / FinalReference
- NoClassDefFoundError: android.app.ANRManagerProxy
- Android: NoClassDefFoundError android.os.AsyncTask
- NoClassDefFoundError en la biblioteca de Caligrafía
- Twitter Fabric + MultiDex causa NoClassDefFoundError
- Android JavaCV dilema, NoClassDefFoundError lanzado dentro del método 'dibujar' cuando se crea IplImage
- Robolectric y Android Studio 1.1.0 y pruebas de biblioteca
- NoClassDefFoundError en un jar anidado (Android)
- Java.lang.NoClassDefFoundError: com.google.android.gms.common.AccountPicker
- Java.lang.NoClassDefFoundError en versiones anteriores de Android SDK
- Obtención de error "java.lang.NoClassDefFoundError: com.android.tools.fd.runtime.AppInfo"
- ¿Cómo arreglar NoClassDefFoundError en twitter4j usando Android Studio?
Tuve el mismo problema y después de algunas horas de frustración y búsqueda finalmente he encontrado la respuesta aquí: Android, la clase no se encuentra desde el archivo importado jar
Básicamente, el problema era que el proyecto puro-java referenciado o el tarro generado se construyó con Java 1.7, y los proyectos de Android están configurados para usar 1.6.
Dos maneras de hacer esto.
- Jar que el proyecto de java y copiar el tarro a la carpeta libs de su proyecto de Android.
- Agregue el proyecto como proyecto dependiente a su proyecto de Android
Ambos funcionan maravillosamente.
Pero ten en cuenta que este proyecto puro-java debe agregar android.jar y no cosas como rt.jar :). De lo contrario obtendrá excepciones de Dalvik.
Editar: No se olvide de actualizar y Proyecto – Limpie su proyecto de Android.
Dos cosas para comprobar (mencionaste que estás usando Eclipse):
-
Si su proyecto androide necesita usar los JARs del proyecto puro-java, compruebe que esos JARs se exportan en las opciones de ruta de compilación del proyecto puro-java. Esto se encuentra en la ruta de construcción del proyecto puro-java que está intentando incluir, no en la ruta de compilación del proyecto android que intenta incluirlo. En la pestaña "Pedido y exportación" del proyecto puro-java, tenga en cuenta el comentario "Las entradas exportadas se contribuyen a proyectos dependientes". En este caso, su proyecto androide es el proyecto dependiente y su proyecto puro-java necesita hacer la contribución.
-
Asegúrese de que el proyecto puro-java está realmente abierto en el IDE además de su proyecto android. Probablemente trivial pero a veces pasado por alto.
Si la respuesta no es suficiente, es posible que desee mencionar si las clases que faltan se encuentran en archivos .java de origen o si sólo se encuentran en JARs en la ruta de construcción del proyecto de puro java
Editar: Para seguir el seguimiento del problema, confirme lo siguiente para asegurarse de que entiendo su pregunta:
-
El proyecto puro-java se construye correctamente en el IDE
-
El error "clase no encontrada" es uno que usted está consiguiendo cuando usted intenta y -construye – su proyecto androide y no cuando usted intenta y -run- él.
-
CLASSPATH (también conocido como camino de construcción) puede ser desagradable para desentrañar. Si incluir el proyecto no funciona (suponiendo que construya), podría intentar crear un JAR de su proyecto puro-java y copiar (e incluir) ese y todos los otros JAR en su proyecto android.
-
El androide SDK ciertamente complica el entorno de compilación. Una forma de averiguar si el problema es (A) la configuración del proyecto androide) O (B) la forma en que el proyecto puro-java está empaquetado) es crear un proyecto puro de Java diferente e intentar incluir el primero, preferiblemente usando el – Exactamente la misma línea de código que le da el error de compilación en el proyecto de Android, si es posible.