当前位置:  开发笔记 > 编程语言 > 正文

"在外部JAR上转换为Dalvik格式失败,错误为1"

如何解决《"在外部JAR上转换为Dalvik格式失败,错误为1"》经验,为你挑选了30个好方法。

在我在Eclipse中的Android应用程序中,我收到以下错误.

意外的顶级异常:
java.lang.IllegalArgumentException:已添加:Lorg/xmlpull/v1/XmlPullParser;
....
转换为Dalvik格式失败,错误1

仅当我将特定外部JAR文件添加到项目时才会出现此错误.我搜索了很长时间以寻找可能的解决方案,但没有一种可行的解决方案可行.我甚至尝试更改为Android 1.6而不是1.5(我使用的当前版本).



1> 小智..:

转到项目»属性»Java构建路径»库并删除除"Android XY"之外的所有内容(在我的案例中为Android 1.5).单击确定.转到项目»清洁»清除下面选择的项目»选择项目,然后单击"确定".这应该工作.

您可能还有一个位于项目文件夹中某处的JAR文件(我已将Admob JAR文件复制到我的src文件夹中),然后将其添加为Java Path Library.它没有显示在Package Explorer下,所以你没有注意到它,但它确实被计算了两次,导致可怕的Dalvik错误1.

另一个可能的原因可能是包名冲突.假设你有一个包com.abc.xyz和一个A.java在这个包里面命名的类,另一个库项目(它被添加到这个项目的依赖项中)包含com.abc.xyz.A.java相同的错误,那么你将得到完全相同的错误.这意味着,您有多个对同一文件的引用,A.java无法正确构建它.

在其他方面,如果您不小心或故意在手动编辑/添加类路径文件中的任何内容,可能会发生这种情况.在某些情况下,我们可能会手动将android.jar路径添加到类路径文件中以生成java doc.On在生成javadoc后删除它代码将工作正常.如果仍然出现任何一个,请检查这一点.


你好.它只是通过选择下面选择的"项目»清洁»清洁项目"来修复我的选择»选择您的项目并单击"确定".忽略第1位
我对这个解决方案很困惑.如果删除所有jar文件和库,那么如何成功编译项目?
我是来自.NET的Android开发新手,说实话,这个错误集中体现了我的经验.说真的......你对这个错误信息有什么意义?这完全没有意义."的Dalvik"?你什么??让我回到视觉工作室:p
我遇到了同样的问题,user408841的上述步骤对我有用.
我发现这对我有用的唯一方法是清理所有项目!尤其是违规项目所依赖的.

2> Michel..:

我解决了这个问题.

这是一个JAR文件冲突.

似乎我的buildpath上有两个包含相同包和类的JAR文件.

smack.jarandroid_maps_lib-1.0.2

从其中一个JAR文件中删除此包解决了该问题.


+1 - 总之,这是一个JAR文件冲突.具体来说,这可能是*any*两个JAR文件中的冲突.在我的例子中,冲突发生在jackson-all-1.7.4.jar,jackson-core-asl-1.5.4.jar和jackson-mapper-asl-1.5.4.jar之间.我删除了两个1.5.4 JAR并将1.7.4全部删除.
在我这边冲突来自ActionbarSherlock,它已经包含了两次git包含的android支持包.

3> Noah..:

Windows 7解决方案:

确认问题是由文件
[Android SDK安装目录]\tools\proguard\bin\proguard.bat中的ProGuard命令行引起的

编辑以下行将解决问题:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9


运行Win7,我可以确认这对我有用.

4> Ton Snoei..:

您可以在导出(取消)已签名的Android应用程序时通过关闭菜单>"项目">"自动构建"轻松解决此问题(使用Eclipse Android Developer Tools,Build:v22.0.1-685705).在那之后,别忘了再打开它.


这解决了我的情况.否则偶尔会出现问题并且没有确定的原因(例如坏罐或路径)

5> Kocus..:

如果你有ADT修订版12+,你应该从4.4 - > 4.6更新你的程序(如这里所述).此外,您应该以原始形式保留...\bin\proguard.bat文件.

只需从Web下载它,并将lib文件夹从下载的包复制到:

[Android SDK安装目录]\tools\proguard\lib


这是多个ADT的问题.下载和替换proguard JAR可以正常工作.

6> 小智..:

编辑(新解决方案):

看起来以前的解决方案只是一个旁路.我设法永久地解决了这个问题:在我的情况下,我的项目和我的项目中引用的Facebook项目中的android-support-v4文件不匹配.

我通过执行Lint Check(Android工具/运行Lint:检查常见错误)发现此错误

我之前的解决方案

我在这个网站上尝试过任何可能的解决方案 - 没有任何帮助!

最后我在这里找到了答案:https: //groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4

简单步骤:

转到项目 - >取消选中自动构建

转到项目 - >清除...,清理库项目和应用项目

将您的应用导出为已签名的APK,同时仍然禁用"自动构建"



7> mikołak..:

这是另一个场景和解决方案:

如果在更新ADT for Eclipse后最近遇到此问题:

    在您的应用程序项目中,检查指向您的库项目的任何链接的源文件夹(它们的名称格式为"LibraryName_src").

    选择所有这些项目,右键单击,选择" 构建路径 " - >" 从构建路径中删除 ".

    选择" 同时取消链接文件夹与项目 ",然后单击" ".

    清理,重建和重新部署项目.

似乎原因是某些以前版本的ADT将库项目源文件夹链接到"子"项目,并且当前的ADT/Dex组合不再与该解决方案兼容.

编辑:这是由Android Dev Blog条目确认的,特别是这一条 - 请参阅第8段.



8> kgandroid..:

转到项目,然后取消选中"自动构建".然后尝试导出项目,错误消失.



9> Thomas Digna..:

如果您已将Android.jar文件添加到构建路径,也可能是由于Eclipse中的意外快速修复,也会导致这种情况.右键单击项目 - > 构建路径 - > 配置构建路径 - > android.jar,删除它.



10> BTR..:

每次出现此错误时,简单地清理项目对我都有用.



11> Darkendorf..:

我在测试所有解决方案四小时后发现的我自己唯一的解决方案是这里提供的许多解决方案的组合:

Delete 来自Eclipse的项目

删除文件\bin,并\gen从项目文件夹

删除对.classpath根项目文件夹中的库的引用

使用命令行重启Eclipse: eclipse -clean

Import 项目

右键单击项目-选择Properties> Java Build Path> Libraries并删除一切比其他Android XX.Y

最后clean项目,等待自动建筑或Build

发布,现在它的工作原理!至少对于我来说...

我一次尝试了每一步和许多组合,但只有所有步骤的连续性一次成功!我希望我不会再面对这个了......



12> Mido..:

只是对于仍然有这个问题的其他人,他们已经尝试了上述答案,但仍然得到错误(这是我的情况),那么我的解决方案是从Eclipse中删除项目并再次重新导入它.

这使得Android库再次添加到我引用的库中,所以现在我引用了两个Android JAR文件,因此我删除了其中一个,现在它编译得很好.

解决方案:从Eclipse IDE中删除项目,然后再次重新导入,然后检查上述解决方案.



13> Joe Fernande..:

今天我自己陷入了这个问题.清理和重建并没有解决问题.删除和重新导入项目也没有帮助.

我终于追溯到我的.class文件的一个坏的补充.我认为当我试图解决另一个问题时,插件工具添加了这个,删除它摆脱了"转换为Dalvik格式失败,错误1"构建错误:


    
        
    
    
        
    



14> brux..:

对我来说,我的构建路径中出现了额外的JAR引用.我删除了这个,现在可以了.



15> Croc..:

我的问题是由ADT版本12.0和ProGuard集成引起的.此错误已有详细记录,解决方案在文档中

解决方案就在这里

ProGuard命令行



16> mvmanh..:

我在项目中使用Sherlock ActionBar库时遇到了这个问题.您可以执行以下步骤,它对我有用.

    右键单击您的项目,选择属性.

    将显示一个对话框,在左侧菜单中选择"Java build path".

    在右侧面板中删除"Android依赖项"和"Android私有库",然后单击"确定"

    清理项目(选择菜单项目 - >清洁)

    右键单击您的项目,选择Android Tools - > Fix project properties

    再次清理项目.

    重启你的电脑

    打开eclipse和Export apk

希望能帮到你.



17> Asaf Pinhass..:

将Proguard更新到最新版本为我解决了这个问题.

我的进步路径是 C:\Program Files (x86)\Android\android-sdk\tools\proguard\

我从这里下载了新版本

并替换了bin和lib文件夹

感谢上帝!



18> AZ_..:

在我的情况下,问题实际上是OpenFeint API项目.我已将OpenFeint添加为库项目:

图书馆项目]![1]![在此处输入图像说明.

它也被添加到构建路径中,ADT工具16给出了此场景的错误.

右键单击您的项目并单击构建路径,配置构建路径,然后查看图像并从此处删除项目OpenFeint并完成所有操作:)

在此输入图像描述



19> Christine..:

我发现了别的东西.Android将该/libs目录用于JAR文件.我曾经多次看到"转换为Dalvik格式失败并出现错误1"错误,总是在我的JAR文件中出错时.

现在我通过将新的JAR文件放在/libs目录中并将类路径切换到新版本,将Roboguice升级到更新的版本.这导致了Dalvik错误.

当我从/libs文件夹中删除其中一个Roboguice JAR文件时,错误消失了.显然,/libs无论您在Java构建路径中指定哪个JAR文件,Android都会从中获取所有JAR文件.我不记得确切,但我认为Android /libs默认从Android 4.0(Ice Cream Sandwich,ICS)开始使用.



20> mindreader..:

通常,当构建路径中存在不必要的JAR文件时,似乎会出现此问题.

我在使用IntelliJ IDEA时遇到了这个问题.对我来说,这是因为我添加了JUnit和Mockito库,这些库是在运行时编译的.这需要在模块属性中设置为"测试".



21> superjos..:

以前提出的解决方案都不适用于我.就我而言,当我从引用库源代码文件夹切换到使用库JAR文件时,问题就出现了.最初在Android应用程序项目Properties\Android page\Library部分下列出了一个Android库项目,并且该库也在项目资源管理器树中作为库源目录的链接进行了比较.

首先,我刚从项目树中删除了目录链接,并将JAR库添加到构建路径,但这导致了异常.

正确的过程是(在更改构建路径并将引用放回库源之后):

通过从应用程序项目Properties\Android页面中删除引用来正确删除库源目录链接

像往常一样将库JAR添加到应用程序项目构建路径.



22> Andrew..:

列出的解决方案都不适合我.

这是我遇到问题的地方:

我将jSoup外部JAR文件添加到我的项目路径中,首先将其放在名为"libs"的源文件夹中,然后右键单击它,构建路径 - >添加到构建路径.这引发了Dalvik转换错误.它说我已经"已经包含"了该JAR文件中的一个类.我环顾了项目的目录,发现"已经包含"的地方实际上是bin目录.我从bin目录中删除了JAR文件并刷新了Eclipse中的项目,错误消失了!



23> olivierg..:

以上所有解决方案对我都不起作用.我没有使用任何预编译的.jar.我正在使用LVL和Dalvik错误,这些都与市场许可库有关.

通过删除主项目并重新导入(从现有源创建新项目)解决了该问题.



24> Seynorth..:

我有同样的问题,这些解决方案都没有奏效.最后,我在控制台中看到错误是由于重复的类(现有项目中的一个,添加的jar文件中的一个):

java.lang.IllegalArgumentException: already added: package/MyClassclass;
[2011-01-19 14:54:05 - ...]: Dx1 error; aborting
[2011-01-19 14:54:05 - ...] Conversion to Dalvik format failed with error 1

因此,请检查您是否在项目中添加了带有重复类的jar.如果是,请尝试删除其中一个.

它对我有用.



25> Andrew Macke..:

通常对我来说,清理项目并不能解决这个问题.

但是在Eclipse中关闭项目然后重新打开它似乎确实在那些情况下修复它...



26> 小智..:

我遇到了这个问题,但我的解决方案是双重的.1.)我必须在项目 - > properties - > Android下添加一个Android目标版本.2.)我没有谷歌的所有"第三方附加组件".在可用软件包 - > 第三方加载项 - > Google Inc下单击AVD SDK管理器.我下载了所有SDK,这解决了我的问题.



27> Jim Rhodes..:

我使用的是Android 1.6并且有一个外部JAR文件.对我有用的是删除所有库,右键单击项目并选择Android工具 - >*修复项目属性(添加回Android 1.6),然后添加回外部JAR文件.



28> Garret Wilso..:

我遇到了这个问题,因为Eclipse中的Android-Maven-plugin显然没有识别来自几个项目(包括一个Android库项目)引用两次的传递引用和引用,并且不止一次地包含它们.我不得不使用hocus-pocus将所有内容都包含在内,即使Maven应该照顾这一切.

例如,我有一个核心库globalmentor-core,它也被globalmentor-google和globalmentor-android(后者是Android库)使用.在globalmentor-android中,pom.xml我必须将依赖关系标记为"已提供",并将其排除在其中包含传递的其他库中:

    
        com.globalmentor
        globalmentor-core
        1.0-SNAPSHOT
        
        provided
    

然后在最终的应用程序中,pom.xml我必须使用正确的技巧,只允许一个包含路径---以及明确包含核心库:

    
    
    
    
    
    

    
        com.globalmentor
        globalmentor-google
        1.0-SNAPSHOT
        
            
            
                com.globalmentor
                globalmentor-core
            
        
    

    
        com.globalmentor
        globalmentor-android
        1.0-SNAPSHOT
    



29> Mufrah..:

就我而言

project-> properties-> java build path - > in order and export tab - > uncheck android-support-v4.jar



30> Yassin..:

只需清理项目

如果这不起作用,请尝试其他解决方案

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有