2011-10-07 15 views
29

ठीक है, अब मैं वास्तव में यहां फंस गया हूं। मुझे नहीं पता कि क्या करना है, कहां जाना है या कुछ भी!डेक्स लोडर एकाधिक डीएक्स फाइलों को निष्पादित करने में असमर्थ

मैं एसडीके और ग्रहण-संस्करण दोनों को अनइंस्टॉल करने, पुनर्स्थापित करने का प्रयास कर रहा हूं, Google को यह करने का प्रयास कर रहा हूं, लेकिन nu-uh ... कुछ भी नहीं !!!

मैं एमुलेटर में मेरे एप्लिकेशन चला सकते हैं, लेकिन मैं नहीं कर सकते इसे निर्यात ...

[2011-10-07 16:35:30 - डेक्स लोडर] डेक्स पर अमल करने में असमर्थ: एकाधिक डेक्स फ़ाइलें परिभाषित 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; 

लेकिन मैं क्या करना है पता नहीं है ... कृपया मदद !!! : है, तो "स्वच्छ" और "बिल्ड" परियोजना मेरे लिए अक्षम "परियोजना> स्वचालित रूप से बनाएँ" विकल्प है, तो चलाने का प्रयास काम करता है वापस सेट "स्वचालित रूप से बनाएँ" कर सकते हैं: '(

+0

क्या आपने ग्रहण के माध्यम से जाने के बजाए इसे सीधे चींटी के साथ बनाने की कोशिश की है ? यदि हां, तो क्या आप पूर्ण बिल्ड लॉग पोस्ट कर सकते हैं? इसके अलावा, क्या आप इस परियोजना में किसी पुस्तकालय परियोजनाओं या जार फ़ाइलों को शामिल कर रहे हैं? – JesusFreke

+0

नहीं मैं चाहता हूं। नहीं, मेरे पास कोई अन्य लाइब्रेरी प्रोजेक्ट या .jars नहीं है, मैं केवल एंड्रॉइड 2.3.3 का उपयोग करता हूं और मेरे पास संपत्ति फ़ोल्डर में संग्रहीत डेटाबेस है। यह पहले काम कर रहा है लेकिन एडीटी और ग्रहण को अद्यतन करने के बाद से, यह असफल रहा है। मैंने चींटी की कोशिश नहीं की है, और मेरे पास अब ऐसा करने का कोई समय नहीं है:/ – DreamHawk

+0

@ user889771 वही, मैंने विज्ञापन अपडेट किया और समस्या हो रही है – Rob

उत्तर

7

मैं (अद्यतन के लिए Help->Check) ग्रहण आज (21 वीं अक्टूबर, 2011) अद्यतन और अब मैं त्रुटि नहीं दिख रहा। इससे पहले कि यह मैं था त्रुटि "Unable to execute dex: Multiple dex files define"। उम्मीद है कि यह मदद करता है।

+0

चलाने की कोशिश करता हूं तो समस्या फिर से दिखाई देगी! यह मदद नहीं करता है। मेरे लिए एक्लिप्स में कुछ पुरानी परियोजनाओं पर काम करने के लिए, यह त्रुटि अभी भी बनी हुई है। –

1

चरणों का पालन करें की कोशिश करो।। करने के लिए विकल्प पर

+0

यह मेरे लिए समस्या को ठीक नहीं करता है, जब मैं ऐप – Rob

1

मैं "एकाधिक डीएक्स फाइल परिभाषित" संदेश भी देख रहा था। about some of the changes in R14 पढ़ने के बाद, मैंने टी हटा दिया वह मेरे प्रोजेक्ट के लिए बिन निर्देशिका, उपरोक्त @abbandon द्वारा वर्णित परियोजना को साफ और पुनर्निर्मित करता है और ग्रहण को पुनरारंभ करता है। इन चरणों ने मेरे लिए समस्या को मंजूरी दी।

8
  1. पुनः प्रारंभ ग्रहण,
  2. हटाएं बिन & जनरल फ़ोल्डर और
  3. अंत में परियोजना को साफ और इसे फिर से निर्माण।

यह मेरे लिए काम किया .. :)

+0

इससे मेरी मदद की। धन्यवाद!!! – offset

2

वाह अंत में ...

यह त्रुटि काफी भीषण था। आखिर में मैंने एक्लिप्स जावा ईई का नवीनतम संस्करण डाउनलोड किया था, फिर मैंने एडीटी प्लगइन को नए ग्रहण में स्थापित किया। Installing the Eclipse Plugin देखें।

बाद में, मैं सामान्य की तरह अपने प्रोजेक्ट के लिए कॉन्फ़िगर है, और उपयोग के निर्यात दिशानिर्देश यहां: Signing Your Applications

लेकिन वैसे भी मैंने देखा है कई जवाब ... और वास्तविक समस्या का निदान करना बेहद मुश्किल है। संभावना यह है कि समस्याएं एडीटी प्लगइन और ग्रहण आईडीई के बीच असंगतता में निहित हैं। मुझे पता है कि नवीनतम संस्करणों का उपयोग करके चीजें काम कर सकती हैं (5 सितंबर, 2012 तक)।

6

समस्या हल हो गई।APP1, APP2 और लिब:

उन्नयन से पहले, मैं 3 एंड्रॉयड परियोजनाओं था। लिब एक एंड्रॉइड लाइब्रेरी प्रोजेक्ट है और ऐप 1 और ऐप 2 इसका इस्तेमाल करते हैं।

दोनों एडीटी और एसडीके अपग्रेड करने के बाद मैं जैसे

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

समाधान त्रुटियों देखा दोनों APP1 और App2 में फ़ोल्डर "Lib_src" कहा जाता है को दूर करने के लिए था।

+0

यह मेरे लिए हल किया गया। धन्यवाद! –

4

दोनों पुस्तकालय और अनुप्रयोग परियोजनाओं ही एक DataBaseHelper.java फ़ाइल होते हैं। इसे ऐप प्रोजेक्ट से बस निकालें।

+0

यदि मैं पुस्तकालय से किसी को ओवरराइट करना चाहता हूं तो क्या होगा? –

57

बिन में एक फ़ाइल नहीं है/dexedLibs एक ही फाइल libs में मौजूद है

libs में इसे हटा दें और यह काम करना चाहिए।

मेरे लिए यह एंड्रॉयड-support-v4.jar था।

आशा इस मदद करता है

+1

+1, मैं एक ही मुद्दे से गुज़र रहा था, आपने अपना समय बचाया धन्यवाद दोस्त @ अहमद जैदी –

+0

जब मैं प्रोजेक्ट चलाता हूं तो यह फ़ोल्डर में जार को दोबारा शुरू करता है। – erdomester

+1

यह स्वीकार्य उत्तर होना चाहिए – Shine

0

libs फ़ोल्डर से 3 पार्टी पुस्तकालयों को हटा कर इसे ठीक किया गया।

शुरू में मैं ActionBarSherlock और MenuDrawer चींटी का उपयोग कर के जार का निर्माण करने की कोशिश की लेकिन यह काम नहीं किया।

libs निर्देशिका से इन जार हटाया जा रहा है बग

0

तय मेरे मामले में वहाँ थे दो अलग जार फ़ाइलों libs फ़ोल्डर में शामिल थे।

मैं उनमें से एक यह मेरी समस्या का समाधान निकाल दिया है।

20

निम्नलिखित सरल कदम

द्वारा यह तय
  • राइट क्लिक परियोजना
  • गुण के लिए जाने के
  • क्लिक जावा बिल्ड पथ
  • 'आदेश और निर्यात' पर
  • टैब अचिह्नित जार फ़ाइलों और निर्भरता पुस्तकालयों
  • पुनर्निर्माण परियोजना।
+0

आप सही हैं +1 –

3

मेरे साथ ऐसा ही हुआ जब मेरे पास एक ही lib की दो प्रतियां थीं (मेरे पास Android समर्थन लाइब्रेरी संस्करण 4 के दो अलग-अलग संशोधन थे)। एक बार मैंने उनमें से एक को हटा दिया - परियोजना संकलित और मैं इसे चलाने में सक्षम था। दान

+0

यह मेरे लिए काम करता है .... मेरी परियोजना में भी दो पुस्तकालय थे जिनके समान वर्ग थे इसलिए मैंने पुस्तकालयों में से एक को हटा दिया और चीजें पूरी तरह से काम कर रही थी .... धन्यवाद – karn

+0

यह मेरे लिए तय किया गया था मैंने google-play-services-lib के लिए समर्थन लाइब्रेरी अपडेट की है। –

1
मेरे लिए

, मैं एंड्रॉयड स्टूडियो उपयोग कर रहा था जब मैं इस मुद्दे को मारा, मैं गूगल Admob और Analytics बाहरी SDKs उपयोग कर रहा था।

अब वे उन्हें किटकैट एसडीके, जो संघर्ष के कारण होता है के साथ शिपिंग रहे हैं, समाधान 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> 

आशा है कि यह मदद करता है, ध्यान रखना ..

0

यदि आप किसी अन्य परियोजना आप 'आदेश और निर्यात' पर * जावा बिल्ड पथ * जाने की जरूरत से एक समर्थन जार आयात कर रहे हैं समर्थन जार पर क्लिक करें और अपनी निर्भरता पुनर्निर्माण परियोजना के शीर्ष पर डाल दिया।

0

कॉर्डोवा में, libs फ़ोल्डर में एक फ़ाइल है जिसे हम पथ बनाने में सेट करते हैं। मैंने कॉर्डोवा को अपडेट किया है और जार फ़ाइल अपडेट किया है लेकिन libs फ़ोल्डर में पुरानी जार फ़ाइल को मिटाना भूल गया है। पुराने को हटा दिया और परियोजना एक आकर्षण की तरह काम किया!

0

यहां दिए गए किसी भी सुझाव ने मेरे लिए इसे हल नहीं किया है। इस तरह मैंने इसे ठीक किया:

फ़ाइल /proj.android/jni/Application.mk के अंदर तीसरी पंक्ति पर, यह "mips" में निर्माण करने के लिए निर्दिष्ट था। मैंने इसे APP_ABI में बदल दिया: = armeabi-v7a ताकि यह सभी प्रीबिल्ट लाइब्रेरी सही ढंग से पा सके।

0

परियोजना में लिब्स फ़ोल्डर हटाया गया, नया Lib_src फ़ोल्डर, फिर से आयात जार। और दायाँ क्लिक करें प्रोजेक्ट -> बिल्ड पथ -> कॉन्फ़िगर बिल्ड पथ, चयनित लिब्स फ़ोल्डर और निकालें क्लिक करें, बटन जोड़ें बटन पर क्लिक करें -> चुनें Lib_src -> ठीक

संबंधित मुद्दे

 संबंधित मुद्दे