[英]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.