Android应用程序崩溃与java.lang.NoClassDefFoundError

时间:2016-08-11 19:50:41

标签: java android

我有一个应用程序在选择项目菜单时创建一个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类中,但这也导致了无法使用。

对于我可能做错的事情,其他人是否有任何见解?真正有趣的是,这个错误只发生在用户第一次点击&#34;配置&#34;屏幕按钮。应用程序崩溃后,用户可以重新打开它并正常点击按钮。

提前谢谢。

更新

我忘记提及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。

1 个答案:

答案 0 :(得分:0)

尝试更改getAplicationContext()

getActivity()

有时getAplicationContext返回null。