2010-05-03 79 views
13

我在android上構建了一個應用程序,運行時出現錯誤,同時在網上搜索時,發現您的帖子並更改了eclipse.ini以增加Xms和Xmx參數,但仍然這個錯誤不會消失。Android:獲取錯誤:轉換爲Dalvik格式失敗

我在Mac OS上使用Eclipse IDE Java for Android SDK 2.1。請幫忙或請將我指向可能知道的人。

順便說一句,這個錯誤只發生在我添加外部jar文件(我需要爲我的項目)。下面是我在我的類路徑的外部JAR文件的列表。)

  • Apache的HttpClient的-4.0.1.jar
  • 的HttpCore -4.0.1.jarfrom阿帕奇
  • 公地編解碼器1.3從阿帕奇的.jar從阿帕奇
  • 共享記錄-1.1.1.jar
  • json_simple-1.1.jar從谷歌

下面是完整的錯誤:

UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added: Lorg/apache/commons/logging/impl/AvalonLogger; 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.dex.file.DexFile.add(DexFile.java:143) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processClass(Main.java:301) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processFileBytes(Main.java:278) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.access$100(Main.java:56) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:229) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf <http://com.android.dx.cf.direct.ClassPathOpener.pro> .direct.ClassPathOpener.processArchive(ClassPathOpener.java:244) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processOne(Main.java:247) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183) 
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.run(Main.java:139) 
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
[2010-05-02 21:57:05 - MyApp]     at java.lang.reflect.Method.invoke(Method.java:592) 
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.sdk.DexWrapper.run(Unknown Source) 
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.build.ApkBuilder.executeDx(Unknown Source) 
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.build.ApkBuilder.build(Unknown Source) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238) 
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
[2010-05-02 21:57:05 - MyApp] 4 errors; aborting 
[2010-05-02 21:57:05 - MyApp] Conversion to Dalvik format failed with error 1 
+0

有沒有解決方案?我也在intellij看到它。 – 2010-10-27 20:25:14

+0

intellij創意的解決方案是什麼? ADT is ok – crossle 2013-05-08 16:21:28

回答

6

UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: already added: Lorg/apache/commons/logging/impl/AvalonLogger;

您正在嘗試兩次添加org.apache.commons.logging.impl.AvalonLogger到您的項目。不要那樣做。

此外,您通過JAR添加的大部分內容已經在Android中,例如HttpClient。這可能會導致你的錯誤。

2

我寫過一篇關於此錯誤的一個可能原因及其解決方案的博客文章here。希望這可以幫助。

+1

感謝您對博客的詳細描述,太糟糕了,這並沒有幫助我;( – Manuel 2011-02-28 19:44:02

4

我只是有這個,但我確保提前,我沒有在我的jar文件中有重複的類。這是一些其他問題處理多個加載相同的jar或東西。類路徑和參考庫的列表看起來是合適的。經過一番徘徊,下面的一些組合固定它:

  • 我正在使用一個不同的外部jar也是目錄中的本地。我將其從構建路徑中移除,然後從本地jar重新添加它。
  • 我刪除了所有外部罐子,並一次添加一個,確保它們是正確的。
  • 我刪除了我的項目中的.classpath文件以及bin和gen目錄。
  • 我在Eclipse中清理了項目,迫使文件重新生成。
  • 我也在生成順序中的gen目錄上方的jar文件中進行了混洗。

以上的一些組合似乎解決了這個問題。如果它再次發生,我會更加小心,看看我是否可以重現它。

1

我有這個問題,因爲我把.jar放在我的src/目錄下,所以Eclipse將它複製到bin/目錄並試圖從兩個地方鏈接它。將它從src/移至libs/解決了這個問題。

1

我的問題是由於在庫項目中也有相同的項目引用。幾次更新之前,這是正常的行爲,但自從庫處理髮生變化以來,我現在需要從我的項目中刪除引用,並且只有其中一個庫引用它。

1

在我使用自定義命令使用proguard進行自定義構建之後,我經常發生這種情況。

我通過清空我的Eclipse項目目錄的bin目錄,然後清洗項目解決了這個問題(Eclipse菜單「項目」 - >「乾淨......」)

顯然proguard的使一個爛攤子在這目錄由Eclipse得到困惑...

2

我想你把你的jar文件夾爲例如庫,然後,從這個文件夾建立路徑。您只需刪除此jar文件並嘗試從項目中選擇屬性,然後Java構建路徑添加外部jar文件文件。它會正常工作。

21

在r14中,他們改變了引用外部庫的方式,並且可能導致此問題。您可以通過文件夾樹移除鏈接的文件夾(在名稱中_src)修復:

  • 點擊右鍵,選擇「構建路徑>從構建路徑中刪除」
  • 彈出框將打開。確保選中「也從項目中取消鏈接文件夾」,然後接受它。

看到http://android-developers.blogspot.co.uk/2011/10/changes-to-library-projects-in-android.html

+0

這是解決我的問題的唯一解決方案。感謝發佈此 – 2012-01-08 18:56:14

+0

這個答案應該被接受,它的確行得通!謝謝 – Guillaume 2012-06-08 02:57:04

+0

感謝兄弟,我從來沒有嘗試過,維克德錯誤oO – martyglaubitz 2013-04-09 14:46:02

0

我得到這個問題試圖做所有更多鈔票的解決方案真的瘋了,但沒有爲我工作:清潔工程,重新編譯,擦除庫,再鏈接庫,更新的ProGuard ,編輯proguard的文件...

最後的解決辦法是更容易:項目Android的工具修復項目propieties

現在我可以導出apk。

0

右鍵單擊src和gen文件夾,然後選擇構建路徑>從構建路徑中移除。 然後 右鍵單擊>構建路徑>用作源文件夾

0

當我試圖在不兼容的android版本中運行代碼時(例如2.2版本需要特定庫才能工作)

相關問題