2009-05-08 12 views
19

Cuando estoy incluyendo el archivo jar jaxp, estoy consiguiendo el error de la siguiente maneranúcleo Android error de biblioteca

trouble processing "javax/xml/XMLConstants.class": 
[2009-05-08 16:53:18 - TestProject] 
Attempt to include a core VM class in something other than a core library. 
It is likely that you have attempted to include the core library from a desktop 
virtual machine into an application, which will most assuredly not work. If 
you really intend to build a core library -- which is only appropriate as 
part of creating a full virtual machine binary, as opposed to compiling an 
application -- then use the "--core-library" option to suppress this error 
message. If you go ahead and use "--core-library" but are in fact building 
an application, then please be aware that your build will still fail at some 
point; you will simply be denied the pleasure of reading this helpful error 
message. 
[2009-05-08 16:53:18 - TestProject] 1 error; aborting 
[2009-05-08 16:53:18 - TestProject] Conversion to Dalvik format failed with error 1 

Hay alguien ha enfrentado a este problema? Cualquier ayuda será realmente apreciada. He ido con algunas soluciones pero no son específicas.

+0

¿Utiliza archivos JAR de terceros? –

+0

Sí, la clase SchemaFactory y la clase Validator están disponibles en ese jar –

+0

Recibo el mismo error, y todo lo que intento hacer es simplemente compilar esto: http://developer.android.com/guide/tutorials/views /hello-webview.html Siguió las instrucciones a la carta. :( –

Respuesta

4

veo dos posibilidades:

En la carpeta de su proyecto, el archivo .classpath podría estar mal. Tratar de reemplazarlo con:

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
<classpathentry kind="src" path="src"/> 
<classpathentry kind="src" path="gen"/> 
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> 
<classpathentry kind="output" path="bin"/> 
</classpath> 

Si esto no funciona, significa que la biblioteca que está intentando incluir no es compatible con Android.

+0

Esto funcionó para mí cuando tuve el siguiente error: 'problema para procesar java/nio/CharBuffer.class' – ubershmekel

-1

I'm not including a core class or building a core library or any of that.

sí, que son:

trouble processing "javax/xml/XMLConstants.class"

Java * y * javax tanto recuento... puede utilizar el conmutador --core-library si solo quiere ignorar esto en una aplicación de prueba, pero preste atención a la advertencia: "su aplicación aún no podrá compilarse o ejecutarse, en algún momento. Esté preparado para clientes enojados que encuentren , por ejemplo, que su aplicación deje de funcionar una vez que actualice su sistema operativo. Usted será el culpable de este problema ".

la solución correcta, como se dice, para una aplicación de envío, es volver a empaquetar esas clases (es decir, moverlas a un nuevo directorio, editar sus líneas de "paquete" correspondientemente y actualizar las líneas de "importación" en sus llamadores) .

+2

También he tenido este problema, y ​​solo estoy citando el archivo ofensivo de el mensaje de error inútil es muy inútil. Este es en realidad un problema que ocurre sin intentar construir las bibliotecas centrales. Consulte las respuestas de Nicolas Raoul y Charlie Collins para ver qué aspecto útil tiene. –

3

Si son incluyendo una clase principal, entonces este error se explica por sí mismo. Si no lo está (busque su código, solo para asegurarse), he visto este error de vez en cuando solo cuando uso Eclipse cuando la "biblioteca" de Android se agrega a la ruta de compilación de Eclipse varias veces por accidente.

No sé cómo se pone en ese estado, pero me ha sucedido dos veces. Para resolverlo, debe corregir el archivo .classpath como anotó Nicolas. Otra forma de hacerlo es editar la "Ruta de compilación de Java" (haga clic con el botón derecho en el proyecto y seleccione las propiedades) y elimine sus bibliotecas de Android * (si hay más de una, elimínelas todas).

Esto hará que el proyecto no compile y tenga muchos errores, pero, una vez que esté seguro de haber eliminado todas las bibliotecas, puede hacer clic derecho en el proyecto y seleccionar "Herramientas Android" -> "Reparar Project Properties "y la correcta (copia única) de Android.jar se agregarán de nuevo y las cosas deberían funcionar bien nuevamente desde allí.

+0

Esto funcionó muy bien para mí, gracias –

+1

Por la De la misma manera, tuve el mismo problema en IntelliJ IDEA cargando un proyecto. Para resolverlo eliminé todas las facetas, reconstruí el proyecto y luego agregué la faceta de Android al módulo de destino de Android. – jwadsack

+0

Gracias por la solución. He estado leyendo todas las soluciones, ninguna parece funcionar para mí. Elimina el archivo android.jar de la ruta de compilación y utiliza "Herramientas de Android". -> Solucionar las propiedades del proyecto "resolvió el problema. – amadamala

1

Lo tengo después de copiar y pegar un proyecto de Android en el mismo espacio de trabajo. Eliminarlo del disco después no fue suficiente, porque Eclipse todavía tenía alguna referencia escondida. También tuve que quitar la siguiente carpeta en la carpeta de espacio de trabajo:

.metadata\.plugins\org.eclipse.core.resources.projects[NameOfTheDuplicateProject]

15

el error que se obtiene de Dx se basa únicamente en los nombres de los paquetes de Java de las librerias que está importando y nada más.

el mensaje puede ser resumido como: si importa una biblioteca en el espacio de nombres java.* o javax.*, es muy probable que depende de otras bibliotecas "núcleo" que sólo se proporcionan como parte del JDK, y por lo tanto ganó' estará disponible en la plataforma Android. básicamente le impide hacer algo estúpido, que es exacto el 99% del tiempo cuando ve ese mensaje.

ahora, por supuesto, el hecho de que un paquete java comience con java.* o javax.* no significa necesariamente que dependa del JDK propiamente dicho. puede funcionar perfectamente bien en Android. para evitar la verificación de estupidez, agregue la opción --core-library a dx. cambiar la última línea de $ANDROID_HOME/platform-tools/dx de,

exec java $javaOpts -jar "$jarpath" "[email protected]" 

a,

exec java $javaOpts -jar "$jarpath" --core-library "[email protected]" 

en mi caso, yo estaba incluida una biblioteca que dependía de Jackson, que depende de JAXB. para mí, anular la verificación de estupidez era aceptable porque el uso de la biblioteca de Jackson era solo para JSON y no para la serialización de XML (solo incluyo la biblioteca JAXB API, no la impl). por supuesto, me gustaría que hubiera una forma más clara de hacerlo, pero volver a escribir la biblioteca de nivel superior para evitar el uso de Jackson no era una opción.

+0

En mi caso, no hay ningún archivo dx en $ ANDROID_HOME/platform-tools /, a pesar de que lo encontré en $ ANDROID_HOME/build-tools/21.1.2 /. allí lo cambié como sugirió, pero obteniendo el mismo error. Alguna ayuda ? –

+0

¿qué herramientas de construcción está construyendo su puntería? –

+0

Estoy usando buld tools v21.1.2 como la ruta de la carpeta que se muestra en el comentario anterior. –

Cuestiones relacionadas