2013-02-14 1 views
0

J'essaie de construire le fichier dex de xmlbeans-2.6.0.jar et xmlbeans-2.3.0.jar.I reçois erreur suivantEst-ce que Dalvik peut convertir des classes internes anonymes au format dex?

[2013-02-14 14:57:08 - SOSTestProject] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class 
(org.apache.xmlbeans.impl.store.Locale$1) that doesn't come with an 
associated EnclosingMethod attribute. This class was probably produced by a 
compiler that did not target the modern .class file format. The recommended 
solution is to recompile the class from source, using an up-to-date compiler 
and without specifying any "-target" type options. The consequence of ignoring 
this warning is that reflective operations on this class will incorrectly 
indicate that it is *not* an inner class. 

[2013-02-14 14:57:08 - SOSTestProject] Dx 
UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added: Lorg/apache/xmlbeans/xml/stream/Location; 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:163) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.command.dexer.Main.processClass(Main.java:490) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.command.dexer.Main.access$400(Main.java:67) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.command.dexer.Main.processOne(Main.java:422) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.dx.command.dexer.Main.run(Main.java:209) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at java.lang.reflect.Method.invoke(Unknown Source) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:187) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:745) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:598) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:321) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:396) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.core.internal.resources.Project$1.run(Project.java:618) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.core.internal.resources.Project.build(Project.java:124) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:1046) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:147) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:855) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:704) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1047) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1251) 
[2013-02-14 14:57:08 - SOSTestProject] Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) 
[2013-02-14 14:57:08 - SOSTestProject] Dx 1 error; aborting 
[2013-02-14 14:57:08 - SOSTestProject] Conversion to Dalvik format failed with error 1 

Je pense que DVM ne peut pas traduire les classes internes anonymes en. Dex format.Si quelqu'un peut aider à ce sujet, il sera vraiment utile.

+0

Ajoutez-vous les deux versions de la bibliothèque au dossier lib de votre projet? – JesusFreke

+0

@JesusFreke Je ne pouvais pas trouver de pot ajouté deux fois dans mon chemin de construction de projet ou plusieurs classes avec le même nom.Mais j'ai un doute si android.jar lui-même contient certaines des classes définies dans le fichier xmlbeans.jar.Si c'est ainsi , si la conversion de xmlbeans.jar au format dex échouait (comme j'ai rencontré la même erreur en essayant de convertir le fichier xmlbeans.jar en format dex depuis la ligne de commande.) Pouvez-vous me confirmer ceci? – Samrat

Répondre

2

Il n'y a pas de problème avec les classes internes anonymes. Comme mentionné par l'avertissement, il s'agit presque certainement d'un format de fichier de classe plus ancien, et l'avertissement peut probablement être ignoré.

L'erreur est liée à plusieurs copies de la classe mentionnée dans l'ensemble des classes qui sont ajoutées au fichier dex que vous essayez de créer. Sur la base des informations éparses que vous avez fournies, je vais deviner que vous mettez les deux versions du fichier jar dans le répertoire lib de votre projet. Cela ne fonctionnera pas, car un fichier dex ne peut pas contenir plusieurs copies d'une classe (c'est-à-dire la version 1.3 et la version 1.6).

Si vous devez avoir les deux versions, vous devrez renommer les classes dans l'une des bibliothèques. Par exemple, vous pouvez utiliser l'outil jarjar pour modifier automatiquement les noms de package des classes.

+0

Merci pour votre suggestion. J'ai ajouté une seule version du fichier xmlbeans.jar dans mon projet, que j'ai compilé à partir du code source de xmlbeans.J'ai converti tous les fichiers jar séparément au format dex en utilisant dx --dex --output = "c: \ temp \ Myxml.apk "" c: \ temp \ xbean.jar ".Il montre la même erreur.Alors je pense que le problème est dans le fichier jar xmlbeans.Il serait génial si quelqu'un peut m'aider à ce sujet – Samrat

Questions connexes