2011-10-05 10 views
8

Cuando limpio mi proyecto me sale el siguiente error:uso desacertada o equivocada de una clase principal (java * o javax *..) Cuando no está la construcción de una biblioteca central

[2011-10-05 13:47:53 - The Basics] Dx 
trouble processing "java/nio/CharBuffer.class": 

Ill-advised or mistaken usage of a core class (java.* or javax.*) 
when not building a core library. 

Esto es a menudo debido para inadvertidamente incluir un archivo de biblioteca central en el proyecto de su aplicación, cuando se usa un IDE (como Eclipse). Si está seguro de que no está definiendo intencionalmente una clase principal , entonces esta es la explicación más probable de lo que está ocurriendo .

Sin embargo, en realidad podría estar tratando de definir una clase en un espacio de nombres , cuya fuente haya tomado, por ejemplo, desde un proyecto de máquina virtual que no sea de Android. Esto más seguramente no funcionará. Como mínimo, pone en peligro la compatibilidad de su aplicación con versiones futuras de la plataforma . También es a menudo de legalidad cuestionable.

Si realmente la intención de construir una biblioteca central - que sólo es apropiada como parte de la creación de una máquina virtual completa distribución, en contraposición a la compilación de una aplicación - a continuación, utilizar el "--core-biblioteca" opción para suprimir este mensaje de error.

Si sigue adelante y usa "--core-library" pero de hecho es construyendo una aplicación, entonces prevenga que su aplicación aún no podrá compilar o ejecutar, en algún momento. Sea preparado para clientes enojados que encuentran, por ejemplo, que su aplicación deja de funcionar una vez que actualizan su sistema operativo . Usted será el culpable de este problema.

Si está utilizando legítimamente algún código que se encuentra en un paquete básico , entonces la alternativa más segura que tiene es reempaquetar ese código. Es decir, mueva las clases en cuestión al su propio espacio de nombres de paquete. Esto significa que nunca estarán en el conflicto con las clases del sistema central. JarJar es una herramienta que puede ayudar al en este esfuerzo. Si encuentra que no puede hacer esto, entonces que es una indicación de que la ruta en la que se encuentra finalmente dará como resultado dolor, sufrimiento, dolor y lamentación.

[2011-10-05 13:47:53 - The Basics] Dx 1 error; aborting 
[2011-10-05 13:47:53 - The Basics] Conversion to Dalvik format failed with error 1 

Respuesta

1

Su IDE está mal configurado. Asegúrese de que sus scripts o IDE no pasen rt.jar o android.jar a dx.

4

Tuve este problema. Uso Maven para construir mis proyectos de Android. Mi problema fue causado por una de mis dependencias en función de los frascos de Android. Actualicé mi pom para excluir a Android de esa dependencia y eso me lo resolvió.

<dependency> 
     <groupId>org.reassembler</groupId> 
     <artifactId>synth-android</artifactId> 
     <version>2.5.8</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>junit</artifactId> 
       <groupId>junit</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>android</artifactId> 
       <groupId>android</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

Espero que esto ayude a alguien, me llevó un tiempo descubrir qué estaba pasando.

+0

Gracias por esta respuesta ... JUnit fue lo que estaba causando el error para mí. – tantalum

2

Para el beneficio de cualquier persona que haya tropezado con esto, este problema puede deberse a la inclusión de una biblioteca anterior, como android.jar. Eliminar el archivo .jar de su ruta de compilación le permitirá compilar. De lo contrario, puede usar el "jarjar" mencionado en el mensaje de error para mover el archivo .jar a otro paquete.

+0

en pocas palabras, esto es correcto. es posible que deba dar un par de pasos adicionales. ¡ACTUALIZADO! :) –

0

En Android Studio, había incluido los archivos java y javax jar en mi carpeta lib y había dependencias relacionadas con ellos (en build.gradle en el nivel de la aplicación). Los comenté.

//compile files('libs/ K java-rt-jar-stubs-1.5.0.jar') 
//compile 'javax.annotation:jsr250-api:1.0' 
//compile files('libs/javax. annotation.jar') 

Luego fui a la Vista del proyecto y eliminé los archivos jar. Hubo algunas instancias heredadas de java.awt.geom que tuve que purgar, pero reconstruí el proyecto y luego estaba bien.

Cuestiones relacionadas