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; 

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

    Related 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