使用Android Studio时发生活动NoClassDefFoundError

使用Android Studio时发生活动NoClassDefFoundError,android,Android,注意:这不是jar中缺少的类,所以不要急于将其标记为重复类。 我正在将一个大型项目从eclipse移植到Android Studio。我终于成功地在屏幕上看到了我的SplashActivity,但我无法获得在我的SplashActivity之后启动的MainActivity。我在运行时遇到以下错误: > 06-13 14:42:30.176 12389-12389/com.totalboox E/AndroidRuntime: FATAL > EXCEPTION: main Proc

注意:这不是jar中缺少的类,所以不要急于将其标记为重复类。
我正在将一个大型项目从eclipse移植到Android Studio。我终于成功地在屏幕上看到了我的SplashActivity,但我无法获得在我的SplashActivity之后启动的MainActivity。我在运行时遇到以下错误:

> 06-13 14:42:30.176 12389-12389/com.totalboox E/AndroidRuntime: FATAL
> EXCEPTION: main Process: com.totalboox, PID: 12389 
>    java.lang.NoClassDefFoundError: com.androidcore.android.main.MainActivity$4
>    at com.androidcore.android.main.MainActivity.<init>(MainActivity.java:587)
>    at java.lang.Class.newInstance(Native Method)
>    at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
>    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
>    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
>    at android.app.ActivityThread.-wrap11(ActivityThread.java)
>    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
>    at android.os.Handler.dispatchMessage(Handler.java:102)
>    at android.os.Looper.loop(Looper.java:148)
>    at android.app.ActivityThread.main(ActivityThread.java:5417)
>    at java.lang.reflect.Method.invoke(Native Method)
>    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
>    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
其中RegisterBroadcastReceiver来自处理通知的外部库(pushwoosh)

SplashActivity启动MainActivity中的代码:

Intent mainActivity = new Intent(this, MainActivity.class);
mainActivity.putExtra("deep_link_book_id", deepLinkBookId);
startActivity(mainActivity); 
finish();
在谷歌上搜索,我发现人们对罐子有这种问题。在我的例子中,MainActivity.java是我的源模块之一,它的包名是
package com.androidcore.android.main与清单中声明的完全相同。
该项目由4个子项目组成。SplashActivity和MainActivity在同一个子项目中

我在这上面花了无数个小时。我尝试过:清理、重建、使缓存无效并重新启动-没有任何帮助。
有谁能建议如何停止这场噩梦?非常感谢

可能会将其用于您的目的过滤器:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
然后用于名称:(如果包名
com.androidcore.android
,则使用
.main.MainActivity

实际上,包的最佳名称是您的域反转:

com.yourdomain.yourprojectname

将其保存在内存中以保持冷静)

发布与MainActivity相关的代码:587
MainActivity$4
通常意味着你的Activityactionandroid->action android,categoryandroid->category androidTry清理你的项目的内部类,可能是匿名的,重建并查看发生了什么请发布代码如何以及在哪里启动
MainActivity
。intent筛选器操作由应用程序内部发送,因此它不是android。intent.action.MainActivity的类别不是LAUNCHER(LAUNCHER是SplashActivity)。包名正确。它不是以
com.yourdomain
开头的。重构到此名称不起作用。我怀疑这是eclipse到AndroidStudio移植工具的副作用。
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
com.androidcore.android.main
android:name=".MainActivity"
com.yourdomain.yourprojectname