簡體   English   中英

Android應用程序崩潰與java.lang.NoClassDefFoundError

[英]Android app crashes with java.lang.NoClassDefFoundError

我有一個應用程序在選擇項目菜單時創建一個Intent,但是當用戶第一次單擊此按鈕時,應用程序會崩潰並顯示以下堆棧跟蹤。

E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.systemsat.monitriip, PID: 17818
java.lang.NoClassDefFoundError: br.com.systemsat.monitriip.activity.ConfigurationActivity
    at br.com.systemsat.monitriip.activity.MainActivity.onOptionsItemSelected(MainActivity.java:212)
    at android.app.Activity.onMenuItemSelected(Activity.java:2912)
    at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:421)
    at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:188)
    at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
    at android.support.v7.app.AppCompatDelegateImplV7.onMenuItemSelected(AppCompatDelegateImplV7.java:663)
    at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810)
    at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
    at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957)
    at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
    at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:618)
    at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:155)
    at android.view.View.performClick(View.java:5201)
    at android.view.View$PerformClick.run(View.java:21163)
    at android.os.Handler.handleCallback(Handler.java:746)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5443)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

下面是我在AndroidManifest.xml中的Activity聲明:

<activity
        android:name=".activity.ConfigurationActivity"
        android:parentActivityName=".activity.MainActivity">
    </activity>

另外,下面是被調用堆棧引起問題的原因:

Intent hashCodeIntent = new Intent(getApplicationContext(), ConfigurationActivity.class);

在StackOverflow中找到的一些答案指出,干凈和重建會起到作用,但我試過沒有任何運氣。 我也嘗試將MultiDex添加到gradle文件以及我的自定義Application類,但這也導致了不行。

其他人可以對我可能做錯了什么有任何見解嗎? 真正令人感興趣的是,此錯誤僅在用戶第一次單擊“配置”屏幕按鈕時發生。 應用程序崩潰后,用戶可以重新打開它並正常單擊按鈕。

先感謝您。

UPDATE

我忘了提到Android Monitor也會在崩潰前記錄以下信息:

Rejecting re-init on previously-failed class java.lang.Class<br.com.systemsat.monitriip.activity.ConfigurationActivity>

更新2

這是我的onOptionsItemSelected方法:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_action_config:
            Intent hashCodeIntent = new Intent(this, ConfigurationActivity.class);
            hashCodeIntent.putExtra("isConfigurationCall", true);
            startActivity(hashCodeIntent);
            break;
    }
    return true;
}

更新3

我剛剛生成了一個apk用於測試目的,錯誤沒有顯示。 也許它與debuging有關? 甚至與gradle版本有關? 我目前使用最后一個版本的gradle。

嘗試為getActivity()更改getAplicationContext() getActivity()

有時getAplicationContext返回null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM