28 votes

Dex Loader Impossible d'exécuter plusieurs fichiers dex définir

Bon, maintenant, je suis vraiment coincé ici. Je ne sais pas quoi faire, où aller, ou QUOI que ce soit!

J'ai essayé de désinstaller, réinstaller, à la fois SDK Eclipse versions, en essayant de Google, mais nu-euh... Rien du tout!!!

Je PEUX utiliser mon application dans l'émulateur, mais je ne peux pas EXPORTER...

[2011-10-07 16:35:30 - Dex Loader] Impossible d'exécuter la dex: Plusieurs dex fichiers de définir l'icom/dreamhawk/kalori/DataBaseHelper;

c'est 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);
    }

}

Je soupçonne:

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

Mais je ne sais pas quoi faire... s'il vous Plaît aider !!! :'(

56voto

Ahmed Zaidi Points 511

Il y a un fichier dans bin / dexedLibs Le même fichier existe dans les bibliothèques

Supprimez-le dans les bibliothèques et cela devrait fonctionner.

Pour moi, c'était Android-support-v4.jar.

J'espère que cela t'aides

21voto

asok Buzz Points 509

Fixé en suivant des étapes simples

  • projet clic droit
  • aller aux propriétés
  • cliquez sur Java Build Path
  • dans l'onglet 'commander et exporter', décochez les fichiers jar et les bibliothèques de dépendances
  • projet reconstruit.

8voto

Indhu Points 1161
  1. Redémarrez l'éclipse,
  2. Supprimer le dossier bin & gen et
  3. Enfin, nettoyez le projet et reconstruisez-le.

Cela a fonctionné pour moi .. :)

7voto

Dhairya Vora Points 1000

J'ai mis à jour eclipse ( Help->Check pour les mises à jour) aujourd'hui ( 21 octobre 2011 ) et maintenant je ne vois pas l'erreur. Avant cela, j'avais l'erreur " Unable to execute dex: Multiple dex files define ". J'espère que cela t'aides.

6voto

Jordi Points 51

Problème résolu.

Avant la mise à niveau, j'avais 3 projets Android: App1, App2 et Lib. Lib est un projet de bibliothèque Android et App1 et App2 l'utilisent.

Après la mise à niveau d'ADT et du SDK, j'ai vu des erreurs comme

 [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;
 

La solution consistait à supprimer dans App1 et App2 le dossier appelé "Lib_src".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X