无法实例化活动…由ClassNotFoundException引发

在将一个完美的工作应用程序转换为一个库(包括它的Activity类!)后,我试图通过简单地超级库的活动来创build一个使用整个库的应用程序:

package com.example.baseapp.paid; import android.os.Bundle; import com.example.baseapp.LibActivity; public class PaidActivity extends LibActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } } 

Eclipse构build这个新的“重新架构”的应用程序没有任何错误,但是当我尝试运行它时,我得到一个exception:

 FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.baseapp.paid/com.example.baseapp.paid.PaidActivity}: java.lang.ClassNotFoundException: com.example.baseapp.paid.PaidActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.baseapp.paid-1.apk] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) at android.app.ActivityThread.access$2300(ActivityThread.java:125) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4627) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: com.example.baseapp.paid.PaidActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.baseapp.paid-1.apk] at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) at java.lang.ClassLoader.loadClass(ClassLoader.java:573) at java.lang.ClassLoader.loadClass(ClassLoader.java:532) at android.app.Instrumentation.newActivity(Instrumentation.java:1021) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) ... 11 more 

我不知道为什么会发生这种情况,因为“类没有find”的错误,当类是完全派生类build立(没有错误!),现在试图运行。

我如何解决这个问题?

我错过了什么?

编辑 (由@CaspNZ回答问题):

这是库项目的AndroidManifest.xml:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.baseapp" android:versionCode="5" android:versionName="1.1.2"> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"/> </manifest> 

这是应用程序的AndroidManifest.xml,使用库项目:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.baseapp.paid" android:versionCode="5" android:versionName="1.1.2"> <uses-sdk android:minSdkVersion="8" /> <uses-library android:name="AppLibrary" /> <uses-permission android:name="android.permission.INTERNET"/> <application android:icon="@drawable/icon"> <activity android:name=".PaidActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.baseapp.LibActivity" android:label="com.example.baseapp.LibActivity:string/rx_label"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="EditPreferences" android:label="com.example.baseapp.LibActivity:string/app_name"> </activity> </application> </manifest> 

我将不胜感激任何提示,因为这是我第一次尝试使用一个库项目,我不熟悉涉及到这个工作的“技巧”。

Solutions Collecting From Web of "无法实例化活动…由ClassNotFoundException引发"

对于更新为ADT 22的任何人,请确保您已在Java构buildpath>订单和导出选项卡中检查了Android专用库。 欲了解更多信息,请阅读。 这对我有用。 也许很less有力量将用户移动到Android Studio而不是Eclipse :))

如果您在库清单中而不是在应用程序清单中列出活动,则会发生这种情况。 库清单中不需要有<activity>标签。 (例如,参见这个主题 。)

我终于解决了这个问题。 事实certificate,我有两个项目的属性设置不正确:

  1. 在图书馆项目中,“Is Library”由于某种原因未被检查。 我可以发誓我检查了它,但是知道Eclipse下的Android开发环境有多么奇怪,我怀疑Eclipse(或者ADT插件)没有检查它是由于一些小故障的结果。
  2. 在应用程序项目中,我忽略了通过Add...button添加我的库项目作为参考。 (我可以是多么愚蠢?)

我希望像我这样的其他新手会觉得这个信息很有帮助。 有时候,一个非常难以debugging的问题,隐藏了一个configuration错误,当无辜的毫无戒心的强调程序员认为这已经被照顾… … –

我在其中一个项目中遇到了同样的错误,并认为我可以分享我是如何修复我的。

在我的项目的某个时候,我必须更改我使用的所有我的Activity类中的一个包名。 当我这样做的时候,我忘记了更新AndroidManifest,这导致了同样的错误。 更新这个固定它。