Dex Loader无法执行多个dex文件定义

好吧,现在我真的被困在这里了。 我不知道该怎么做,去哪里或者什么!

我一直在试图卸载,重新安装SDK和Eclipse版本,试图谷歌这一点,但nu – 呃…没有!

我可以在模拟器中运行我的应用程序,但我不能导出它…

[2011-10-07 16:35:30 – Dex Loader]无法执行dex:多个dex文件定义了Lcom / dreamhawk / kalori / DataBaseHelper;

这是dataBaseHelper

package com.dreamhawk.kalori; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; import android.widget.Toast; public class DataBaseHelper extends SQLiteOpenHelper { // The Android's default system path of your application database. private static String DB_PATH = "/data/data/com.dreamhawk.kalori/databases/"; private static String DB_NAME = "livsmedel_db"; private DataBaseHelper myDBHelper; private SQLiteDatabase myDb; private final Context myContext; private static final String DATABASE_TABLE = "Livsmedel"; public static String DB_FILEPATH = "/data/data/com.dreamhawk.kalori/databases/lifemedel_db"; public static final String KEY_TITLE = "Namn"; public static final String KEY_BODY = "Kcal"; public static final String KEY_ROWID = "_id"; private static final int DATABASE_VERSION = 2; /** * Constructor Takes and keeps a reference of the passed context in order to * access to the application assets and resources. * * @param context */ public DataBaseHelper(Context context) { super(context, DB_NAME, null, 1); this.myContext = context; // checking database and open it if exists if (checkDataBase()) { openDataBase(); } else { try { this.getReadableDatabase(); createDatabase(); this.close(); openDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } Toast.makeText(context, "Livsmedelsdatabasen importerad", Toast.LENGTH_LONG).show(); } } private boolean checkDataBase() { SQLiteDatabase checkDB = null; boolean exist = false; try { String dbPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READONLY); } catch (SQLiteException e) { Log.v("db log", "database does't exist"); } if (checkDB != null) { exist = true; checkDB.close(); } return exist; } @Override public void onCreate(SQLiteDatabase db) { // db.execSQL(DATABASE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w("Kalori", "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS Livsmedel"); onCreate(db); } public DataBaseHelper open() throws SQLException { myDBHelper = new DataBaseHelper(myContext); myDb = myDBHelper.getWritableDatabase(); return this; } public void createDatabase() throws IOException { InputStream assetsDB = myContext.getAssets().open("livsmedel_db"); // OutputStream dbOut = new FileOutputStream(DB_PATH); String outFileName = DB_PATH + DB_NAME; OutputStream dbOut = new FileOutputStream(outFileName); Log.d("DH", "index=" + assetsDB); byte[] buffer = new byte[1024]; int length; while ((length = assetsDB.read(buffer)) > 0) { dbOut.write(buffer, 0, length); } dbOut.flush(); dbOut.close(); assetsDB.close(); } public Cursor fetchAllNotes() { return myDb.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_TITLE, KEY_BODY }, null, null, null, null, null); } public void openDataBase() throws SQLException { String dbPath = DB_PATH + DB_NAME; myDb = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE); } } 

我猜测:

 import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; 

但我不知道该怎么办…请帮助! :'(

Solutions Collecting From Web of "Dex Loader无法执行多个dex文件定义"

我今天( 2011年10月21日 )更新了eclipse( Help->Check更新),现在我没有看到错误。 之前,我有错误“ Unable to execute dex: Multiple dex files define ”。 希望这可以帮助。

bin / dexedLibs中有一个文件libs中存在相同的文件

删除它在库中,它应该工作。

对我来说,这是android-support-v4.jar。

希望这可以帮助

通过以下简单的步骤来修复它

  • 右键单击项目
  • 去属性
  • 单击Java构buildpath
  • 在'订单和导出'选项卡上取消选中jar文件和依赖项库
  • 重build项目。
  1. 重新启动eclipse,
  2. 删除bin和gen文件夹和
  3. 最后清理项目并重新构build。

这对我工作.. 🙂

问题解决了。

升级之前,我有3个Android项目:App1,App2和Lib。 Lib是一个Android库项目,App1和App2使用它。

升级ADT和SDK后,我看到类似的错误

 [2012-12-05 15:54:10 - Dex Loader] Unable to execute dex: Multiple dex files define Lxxx; [2012-12-05 15:54:10 - TrailGuide] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lxxx; 

解决scheme是在App1和App2中删除名为“Lib_src”的文件夹。

库和App项目都包含相同的DataBaseHelper.java文件。 只是从应用程序项目中排除它。

当我有了同样的lib的两个副本(我有Android支持库版本4的两个不同版本)时,发生了这种情况。 一旦我删除其中的一个 – 项目编译,我能够运行它。 担

哇…终于…

这个错误是相当可怕的。 我最终做的是下载最新版本的Eclipse Java EE,然后将ADT插件安装到新的Eclipse中。 请参阅安装Eclipse插件 。

之后,我像正常一样configuration我的项目,并使用在此处find的导出指南: 签署您的应用程序

但无论如何,我已经看到了许多答案…实际的问题是非常难以诊断。 可能的问题在于ADT插件和Eclipse IDE不兼容。 我只知道使用最新的版本将使事情工作(截至2012年9月5日)。

请按照以下步骤操作:禁用“Project-> Build Automatically”选项,然后select“Clean”和“Build”项目,然后尝试运行。 为我工作。 可以将“自动构build”选项设置为“打开”

我还看到“多个dex文件定义”消息。 在阅读了R14中的一些更改之后 ,我删除了我的项目的bin目录,按照上面的@abbandon所述清理并重​​build项目,然后重新启动Eclipse。 这些步骤为我解决了这个问题。

对于我来说,当我遇到这个问题时,我使用的是Android Studio,我使用的是Google Admob和Google Analytics的外部SDK。

现在他们用kitkat SDK发货,导致了冲突,解决办法是打开project.iml文件并删除以下几行:

 <orderEntry type="module-library"> <library> <CLASSES> <root url="jar://$USER_HOME$/Downloads/Ads/lib/amazon-ads-4.0.9.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </orderEntry> <orderEntry type="module-library"> <library> <CLASSES> <root url="jar://$USER_HOME$/Downloads/Folx/application/GoogleAdMobAdsSdk-6.2.1/Add-ons/googleanalyticsandroid/libGoogleAnalyticsV2.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </orderEntry> 

希望它有帮助,保重..

通过从libs文件夹中删除第三方库来修复它。

最初我尝试使用ant构buildActionBarSherlock和MenuDrawer的jar,但是它不起作用。

从libs目录中删除这些jar修复了这个bug

在我的情况下,有两个不同的jar文件包含在libs文件夹中。

我已经删除其中一个解决了我的问题。

如果你从另一个项目导入一个支持jar,你需要去'订购和导出'的* Java Build Path *点击支持jar,并把它放在你的依赖重build项目的顶部。

在Cordova中,在libs文件夹中有一个我们在构buildpath中设置的文件。 我更新了cordova并更新了jar文件,但忘记删除libs文件夹中的旧jar文件。 删除旧的和项目工作就像一个魅力!

这里没有任何build议为我解决。 这是我如何解决它:

在第三行的/proj.android/jni/Application.mk文件中,指定了构build“mips”。 我将其更改为APP_ABI:= armeabi-v7a,以便可以正确地find所有预build的库。

删除项目中的Libs文件夹,新的Lib_src文件夹,再次导入jar。 右键单击工程 – > Build Path – > Config Build path,selectLibs文件夹并点击Remove,点击buttonAdd Folder – >selectLib_src – > OK