好的,现在我真的被困在这里了。我不知道该做什么,去哪里或者任何事情!
我一直在尝试卸载,重新安装SDK和Eclipse版本,尝试谷歌这个,但nu-uh ......没什么!!!
我可以在模拟器中运行我的应用程序,但我无法导出它......
[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;
但我不知道该怎么办......请帮忙!!! :'(
答案 0 :(得分:57)
bin / dexedLibs中有一个文件 libs中存在相同的文件
在libs中删除它,它应该可以工作。
对我而言,它是android-support-v4.jar。
希望这有帮助
答案 1 :(得分:20)
通过以下简单步骤修复它
答案 2 :(得分:8)
这对我有用.. :)
答案 3 :(得分:7)
我今天更新了eclipse(Help->Check
更新)( 2011年10月21日),现在我没有看到错误。在它之前我有错误“Unable to execute dex: Multiple dex files define
”。希望这会有所帮助。
答案 4 :(得分:6)
问题解决了。
在升级之前,我有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;
解决方案是在App1和App2中删除名为“Lib_src”的文件夹。
答案 5 :(得分:4)
Library和App项目都包含相同的DataBaseHelper.java文件。只是从App项目中排除它。
答案 6 :(得分:3)
当我有两个相同的lib副本时(我有两个不同的Android支持库版本4的版本),我发生了这种情况。一旦我删除其中一个 - 项目编译,我就能运行它。 丹
答案 7 :(得分:2)
WOW终于......
这个错误非常可怕。我最终做的是下载最新版本的Eclipse Java EE,然后我将ADT插件安装到新的Eclipse中。 请参阅Installing the Eclipse Plugin。
之后,我像平常一样配置了我的项目,并使用了此处的导出指南: Signing Your Applications
但无论如何我已经看到很多答案......实际问题很难诊断出来。 可能性是问题在于ADT插件和Eclipse IDE之间不兼容。 我只知道使用最新版本可以使事情有效(截至2012年9月5日)。
答案 8 :(得分:1)
我也看到了“多个dex文件定义”消息。在阅读about some of the changes in R14之后,我删除了项目的bin目录,清理并重建了上面@abbandon所描述的项目并重新启动了Eclipse。这些步骤为我解决了这个问题。
答案 9 :(得分:1)
尝试以下步骤: 禁用“项目 - >自动构建”选项,然后“清除”和“构建”项目,然后尝试运行。 适合我。 可以将“自动构建”选项设置为“开”
答案 10 :(得分:1)
对我来说,当我遇到这个问题时,我正在使用Android工作室,我正在使用Google Admob和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>
希望它有所帮助,保重......
答案 11 :(得分:0)
删除项目中的Libs文件夹,新的Lib_src文件夹,再次导入jar。 并右键单击项目 - &gt;构建路径 - &gt;配置构建路径,选择Libs文件夹并单击删除,单击按钮添加文件夹 - &gt;选择Lib_src - &gt;行
答案 12 :(得分:0)
这里的建议都没有为我解决。这是我修复它的方式:
在第3行的文件/proj.android/jni/Application.mk中,它指定构建&#34; mips&#34;。我将其更改为APP_ABI:= armeabi-v7a,以便它可以正确找到所有预建库。
答案 13 :(得分:0)
在Cordova中,在libs文件夹中有一个我们在构建路径中设置的文件。我已更新cordova并更新jar文件但忘记删除libs文件夹中的旧jar文件。删除旧的,项目就像一个魅力!
答案 14 :(得分:0)
如果您要从另一个项目导入支持jar,则需要访问 * Java构建路径 *在'订单和导出'上单击支持jar并将其置于依赖项之上 重建项目。
答案 15 :(得分:0)
在我的情况下,libs文件夹中包含两个不同的jar文件。
我删除了其中一个解决了我的问题。
答案 16 :(得分:0)
通过从libs文件夹中删除第三方库来修复它。
最初我尝试使用ant构建一个ActionBarSherlock和MenuDrawer的jar,但它没有用。
从libs目录中删除这些jar修复了错误