web-dev-qa-db-fra.com

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

D'accord, 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, les versions SDK et Eclipse, en essayant de Google, mais nu-euh ... Rien !!!

Je peux exécuter mon application dans l'émulateur, mais je ne peux pas l'exporter ...

[2011-10-07 16:35:30 - Dex Loader] Impossible d'exécuter dex: plusieurs fichiers dex définissent Lcom/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, aidez !!! : "(

29
DreamHawk

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'ai eu l'erreur "Unable to execute dex: Multiple dex files define". J'espère que cela t'aides.

7
Dhairya Vora

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 le support Android-v4.jar.

J'espère que cela t'aides

57
Ahmed Zaidi

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.
20
asok Buzz
  1. Redémarrez Eclipse,
  2. Supprimer le dossier bin & gen et
  3. Enfin, nettoyez le projet et reconstruisez-le.

Cela a fonctionné pour moi .. :)

8
Indhu

Problème résolu.

Avant la mise à niveau, j'avais 3 Android: App1, App2 et Lib. Lib est un 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".

6
Jordi

Les projets Library et App contiennent tous les deux un même fichier DataBaseHelper.Java. Excluez-le simplement du projet App.

4
DicomJ23

Cela m’était arrivé quand j’avais deux copies de la même bibliothèque (j’avais deux révisions différentes de la bibliothèque de support Android version 4). Une fois que j’en ai retiré une - le projet compilé J'ai pu l'exécuter. Dan

3
FunkSoulBrother

WOW enfin ...

Cette erreur était assez horrible. J'ai finalement téléchargé la dernière version d'Eclipse Java EE, puis j'ai installé le plugin ADT dans le nouvel Eclipse. Voir Installation du plugin Eclipse .

Par la suite, j'ai configuré mon projet comme d'habitude et j'ai utilisé les directives d'exportation trouvées ici: Signature de vos applications

Mais de toute façon, j'ai vu beaucoup de réponses ... et le problème réel est extrêmement difficile à diagnostiquer. Il est possible que le problème réside dans l'incompatibilité entre le plugin ADT et l'IDE Eclipse. Je sais juste que l'utilisation des versions les plus récentes fera fonctionner les choses (à partir du 5 septembre 2012).

2
Nick Miller

Essayez de suivre les étapes: Désactivez l'option "Projet-> Générer automatiquement", puis "Nettoyer" et "Générer" le projet, puis essayez d'exécuter. travaille pour moi. peut remettre l'option "Construire automatiquement" sur On

1
abbandon

Je voyais également le message "Plusieurs fichiers dex définir". Après avoir lu sur certaines des modifications de R14 , j'ai supprimé le répertoire bin de mon projet, nettoyé et reconstruit le projet comme décrit par @abbandon ci-dessus et redémarré Eclipse. Ces étapes ont résolu le problème pour moi.

1
terry

pour moi, j'utilisais Android studio lorsque j'ai rencontré ce problème, j'utilisais les SDK externes Google Admob et Analytics.

Maintenant, ils les expédient avec le KitKat SDK, qui a provoqué le conflit, la solution était d'ouvrir le fichier project.iml et de supprimer les lignes suivantes:

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

J'espère que ça aide, faites attention ..

1
SAFAD

si vous importez un pot de support à partir d'un autre projet, vous devez aller dans * Java Build Path * sur 'commander et exporter', cliquez sur le pot de support et placez-le au-dessus de votre projet reconstruit de dépendances.

0
Gal Rom

Dans mon cas, il y avait deux fichiers jars différents inclus dans le dossier libs.

J'ai supprimé l'un d'eux pour résoudre mon problème.

0
KHALID

Corrigé en supprimant les bibliothèques tierces du dossier libs.

Au départ, j'ai essayé de construire des pots d'ActionBarSherlock et MenuDrawer en utilisant ant mais cela n'a pas fonctionné.

La suppression de ces fichiers jars du répertoire libs a corrigé le bogue

0
HimalayanCoder

Suppression du dossier Libs dans le projet, nouveau dossier Lib_src, importation du pot à nouveau. et cliquez avec le bouton droit sur le projet -> Chemin de génération -> Chemin de génération de configuration, dossier Libs sélectionné et cliquez sur Supprimer, cliquez sur le bouton Ajouter un dossier -> sélectionnez Lib_src -> OK

0
zxbin

Dans Cordova, dans le dossier libs, il y a un fichier que nous avons défini dans le chemin de génération. j'ai mis à jour cordova et mettre à jour le fichier jar mais oubliez de supprimer l'ancien fichier jar dans le dossier libs. retiré l'ancien et le projet a fonctionné comme un charme!

0
locknies

Aucune des suggestions ici ne l'a résolu pour moi. C'est ainsi que je l'ai corrigé:

A l'intérieur du fichier /proj.Android/jni/Application.mk sur la 3ème ligne, il spécifiait de construire en "mips". J'ai changé cela en APP_ABI: = armeabi-v7a pour qu'il puisse trouver correctement toutes les bibliothèques prédéfinies.

0
redux