无法执行dex:多个dex文件定义& java.lang.NoClassDefFoundError

时间:2014-07-04 10:34:14

标签: android java

我介于2个错误之间。我不知道该怎么办。 第一个错误:

  

[2014-07-04 15:07:01 - Dex Loader]无法执行dex:多个dex   文件定义Lcom / google / gdata / util / common / base / Escaper;

     

[2014-07-04 15:07:01 - MyGov]转换为Dalvik格式失败:   无法执行dex:多个dex文件定义   LCOM /谷歌/ GDATA / util的/普通/碱/逃避者; Landroid /支撑/ V4 / accessibilityservice / AccessibilityServiceInfoCompat $ AccessibilityServiceInfoVersionImpl;

根据建议here,取消选中Android私有库

enter image description here

我已将所有库(来自AndroidPrivateLibraries)添加到libs中,除了support-v4-18.0.4.jar库(导致之前声明的错误)。

enter image description here

SplashActivity(此活动在应用程序启动时打开)工作正常。但是当我尝试打开MainActivity时出现错误:

  

java.lang.NoClassDefFoundError:   com.globalsolutions.mygov.ui.MainActivity

根据this solution,应检查Android私有库。

结论

error#1 makes me to uncheck Android Private libraries
error#2 makes me to re-check Android Private libraries

如何处于这种情况?如何解决这个问题呢? 谢谢你宝贵的时间!

更新:

错误1中的控制台通知:

  

[2014-07-04 15:06:48 - MyGov] Dx麻烦写输出:已经   准备[2014-07-04 15:07:01 - Dex Loader]无法执行dex:   多个dex文件定义Lcom / google / gdata / util / common / base / Escaper;   [2014-07-04 15:07:01 - MyGov]转换为Dalvik格式失败:   无法执行dex:多个dex文件定义   LCOM /谷歌/ GDATA / util的/普通/碱/逃避者;

Logcat for error 2:

  

07-04 15:15:07.679:E / AndroidRuntime(26204):致命异常:主要   07-04 15:15:07.679:E / AndroidRuntime(26204):   java.lang.NoClassDefFoundError:   com.globalsolutions.mygov.ui.MainActivity 07-04 15:15:07.679:   E / AndroidRuntime(26204):at   com.globalsolutions.mygov.ui.SplashActivity.startMainActivity(SplashActivity.java:174)   07-04 15:15:07.679:E / AndroidRuntime(26204):at   com.globalsolutions.mygov.ui.SplashActivity $ 6 $ 3.run(SplashActivity.java:275)   07-04 15:15:07.679:E / AndroidRuntime(26204):at   android.os.Handler.handleCallback(Handler.java:587)07-04   15:15:07.679:E / AndroidRuntime(26204):at   android.os.Handler.dispatchMessage(Handler.java:92)07-04   15:15:07.679:E / AndroidRuntime(26204):at   android.os.Looper.loop(Looper.java:130)07-04 15:15:07.679:   E / AndroidRuntime(26204):at   android.app.ActivityThread.main(ActivityThread.java:3687)07-04   15:15:07.679:E / AndroidRuntime(26204):at   java.lang.reflect.Method.invokeNative(Native Method)07-04   15:15:07.679:E / AndroidRuntime(26204):at   java.lang.reflect.Method.invoke(Method.java:507)07-04 15:15:07.679:   E / AndroidRuntime(26204):at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:867)   07-04 15:15:07.679:E / AndroidRuntime(26204):at   com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)07-04   15:15:07.679:E / AndroidRuntime(26204):at   dalvik.system.NativeStart.main(Native Method)07-04 15:15:07.687:   E / liblog(1516):未能调用dumpstate 07-04 15:15:07.687:E /(1516):   Dumpstate> /数据/日志/ dumpstate_app_error

主要活动代码:

package com.globalsolutions.mygov.ui;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.globalsolutions.mygov.Preferences;
import com.globalsolutions.mygov.R;
import com.globalsolutions.mygov.ui.master.MasterWizardActivity;
import com.google.analytics.tracking.android.EasyTracker;

public class MainActivity extends BaseActivity {
    public static final String TAG = MainActivity.class.getSimpleName();

    private LinearLayout warningContainer;
    private TextView warningLabel;
    private Button history;
    private Button appeal;
    private Button call;
    private Button about;
    private Button settings;

    private Preferences prefs;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();
        setContentView(R.layout.activity_main);
        initViews();

        prefs = Preferences.getInstance(this);
    }


    @Override
    public void onResume() {
        Preferences.refActivity = this;
        super.onResume();
    }


    /**
     * Поиск и инициализация вьюшек
     */
    private void initViews() {
        warningContainer = (LinearLayout) findViewById(R.id.warning);
        warningLabel = (TextView) findViewById(R.id.warningLabel);
        history = (Button) findViewById(R.id.history);
        appeal = (Button) findViewById(R.id.appeal);
        call = (Button) findViewById(R.id.call);
        about = (Button) findViewById(R.id.about);
        settings = (Button) findViewById(R.id.settings);

        Intent intent = getIntent();
        if (intent != null) {
            String status = intent.getStringExtra("status");
            if (!"success".equals(status)) {
                warningContainer.setVisibility(View.VISIBLE);
                history.setEnabled(false);
                appeal.setEnabled(false);
            }
        }
    }

    /**
     * История обращений
     * @param v
     */
    public void historyClick(View v) {
        EasyTracker.getTracker().sendEvent("Главное меню", "Выбран пункт", "История обращений", (long) 0);  
        Intent i = new Intent(getApplicationContext(), RequestsListActivity.class);
        startActivity(i);       
        overridePendingTransition(0, 0);
    }

    /**
     * Подать обращение
     * @param v
     */
    public void appealClick(View v) {
        EasyTracker.getTracker().sendEvent("Главное меню", "Выбран пункт", "Подать обращение", (long) 0);   
        Intent i = new Intent(getApplicationContext(), MasterWizardActivity.class);
        startActivity(i);       
        overridePendingTransition(0, 0);
    }

    /**
     * Позвонить в Call-центр
     * @param v
     */
    public void callClick(View v) {
        EasyTracker.getTracker().sendEvent("Главное меню", "Выбран пункт", "Позвонить в call-центр", (long) 0); 
        dialPhone();
    }

    /**
     * О приложении
     * @param v
     */
    public void aboutClick(View v) {
        EasyTracker.getTracker().sendEvent("Главное меню", "Выбран пункт", "О приложении", (long) 0);   
        Intent intent = new Intent(this, AboutActivity.class);
        startActivity(intent);
    }

    /**
     * Настройки
     * @param v
     */
    public void settingsClick(View v) {
        EasyTracker.getTracker().sendEvent("Главное меню", "Выбран пункт", "Настройки", (long) 0);  
        Intent intent = new Intent(this, PreferencesActivity.class);
        startActivity(intent);
    }

    @Override
    public void onStart() {
      super.onStart();
      EasyTracker.getInstance().activityStart(this);
    }

    @Override
    public void onStop() {
      super.onStop();
      EasyTracker.getInstance().activityStop(this);
    }           
}

1 个答案:

答案 0 :(得分:1)

  

我介于2个错误之间。我不知道该怎么办。第一个错误:

此错误相当不言自明。您将包含2个以上JAR(或JAR以及您自己的Java类),这些JAR具有所述的重复项。

解决方案是确定重复的来源(例如,检查JAR),然后确定要更改或删除的JAR。

  

根据此处的建议,取消选中Android私人库

我倾向于回答这个问题,因为这是错误的。

  

我已将所有库(来自AndroidPrivateLibraries)添加到libs中,除了support-v4-18.0.4.jar库(导致之前声明的错误)。

我正在将该句子解释为"当我添加support-v4-18.0.4.jar时,我开始收到构建错误"。在这种情况下,您知道两个JAR中的一个是您问题的根源。鉴于冲突中的类名,我猜其他的是libGoogleAnalyticsV2.jar。你需要:

  1. 查找旨在协同工作的这些JAR的版本,或

  2. 摆脱其中一个JAR。