Android ClassNotFoundException,尽管类似乎仍然存在

Android ClassNotFoundException,尽管类似乎仍然存在,android,Android,我有一个应用程序,其中我有 public class mainactivity extends Activity implements View.OnClickListener { ... 我在舱单上声明。一切都可以完美地编译和运行。然后我将类更改如下: public class mainactivity extends Activity implements View.OnClickListener , MoPubInterstitialListener { ... + extra code

我有一个应用程序,其中我有

public class mainactivity extends Activity implements View.OnClickListener
{
...
我在舱单上声明。一切都可以完美地编译和运行。然后我将类更改如下:

public class mainactivity extends Activity implements View.OnClickListener , MoPubInterstitialListener
{
...
+ extra code to do with "mopub"
这段新代码可以编译,但现在,只要我的启动屏幕活动关闭并移交给mainactivity,我就明白了

03-08 10:47:40.380: I/dalvikvm(9013): Failed resolving Lcom/mycompany/myapp/mainactivity; interface 1127 'Lcom/mopub/mobileads/MoPubInterstitial$MoPubInterstitialListener;'
03-08 10:47:40.380: W/dalvikvm(9013): Link of class 'Lcom/mycompany/myapp/mainactivity;' failed
03-08 10:47:40.380: D/AndroidRuntime(9013): Shutting down VM
03-08 10:47:40.380: W/dalvikvm(9013): threadid=1: thread exiting with uncaught exception (group=0x40c7e1f8)
03-08 10:47:40.385: E/AndroidRuntime(9013): FATAL EXCEPTION: main
03-08 10:47:40.385: E/AndroidRuntime(9013): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mycompany.myapp/com.mycompany.myapp.mainactivity}: java.lang.ClassNotFoundException: com.mycompany.myapp.mainactivity
03-08 10:47:40.385: E/AndroidRuntime(9013):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at android.app.ActivityThread.access$600(ActivityThread.java:127)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at android.os.Looper.loop(Looper.java:137)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at android.app.ActivityThread.main(ActivityThread.java:4511)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at java.lang.reflect.Method.invokeNative(Native Method)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at java.lang.reflect.Method.invoke(Method.java:511)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at dalvik.system.NativeStart.main(Native Method)
03-08 10:47:40.385: E/AndroidRuntime(9013): Caused by: java.lang.ClassNotFoundException: com.mycompany.myapp.mainactivity
03-08 10:47:40.385: E/AndroidRuntime(9013):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at android.app.Instrumentation.newActivity(Instrumentation.java:1026)
03-08 10:47:40.385: E/AndroidRuntime(9013):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882)
03-08 10:47:40.385: E/AndroidRuntime(9013):     ... 11 more
我不知道如何继续下去。如果我尝试调试器,似乎连mainactivity.OnCreate()的第一行都没有执行

编辑:我的清单中包含以下内容:

<activity android:name="com.mopub.mobileads.MoPubActivity"
 android:configChanges="keyboardHidden|orientation"/>

您是否在清单中定义了MoPub活动

<activity android:name="com.mopub.mobileads.MoPubActivity"
 android:configChanges="keyboardHidden|orientation"/>
链接。它应该可以解决您的问题。

Classpath 如果这听起来很有意思,那就继续读下去

诊断:
这意味着编译器在
编译时
找到这些类,但在
运行时

药物:
我以前有过这样的经历,但不完全确定步骤,但让我为您指出正确的方向。

  • 如果您正在使用ADT和eclipse,请检查项目中的
    .classpath
  • 检查项目->构建属性中的构建顺序
  • 检查您的jar是否包含在构建路径中
ISlibrary项目
如果
ComponentInfo
是库项目的一部分,那么手动将其包含在构建路径中就是一个
CardinalSin
(严重!)。您应该只需在
项目属性->android
选项卡中添加一个库项目。

我遇到了类似的问题,我选中了Java构建路径-排序和导出下的android-support-v4.jar复选框。

您能将清单文件放入吗
com.mycompany.myapp
你的整个清单?不过还有别的事情。仅仅向类添加另一个接口声明不应该引起问题。OP没有为mopub发布额外的代码,因此,读者可能觉得仅仅添加新接口就导致了问题。我猜MoPubActivity随后会在清单中定义?如果您在没有实现链接中的另一个接口的情况下执行MoPub实现,它还会遇到同样的问题吗?您在哪里看到这个MoPub活动?他没有提到这件事。你的意思是mainactivity吗?在你的主活动下面的清单文件中,添加我在上面为MoPubActivity显示的代码,然后重试。您必须定义库活动,它才能工作。@Neil:很抱歉回复太慢,但我的清单中已经有了这个。