如何解决无法实例化活动…由ClassNotFoundException引起
|| 在将运行良好的应用程序转换为库(包括其Activity类!)之后,我试图通过简单地超类库的活动来创建使用整个库的应用程序: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生成了这个新的“重新架构”应用程序,没有任何错误,但是当我尝试运行它时,出现了一个异常:
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
我不知道为什么会这样,因为当类恰好是构建的派生类(没有错误!)并且现在尝试运行时,由于“未找到类”的错误。
我该如何解决?
我想念什么?
编辑(通过@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>
我很想尝试解决此问题的任何提示,因为这是我第一次尝试使用库项目,而且我不熟悉使此工作正常进行的“技巧”。
解决方法
对于更新为ADT 22的任何人,请确保已在Java Build Path> Order and Export选项卡中选中了Android Private Libraries。有关更多信息,请阅读此内容。这对我有用。将用户转移到Android Studio而不是Eclipse的动力不大:))
, 如果您在库清单中而不是在应用程序清单中列出活动,则会发生这种情况。库清单中不需要标签。 (例如,请参见此线程。)
, 我终于解决了问题。事实证明,在两个项目的“属性”中,我有2个关键设置未正确设置:
在图书馆项目中,“是图书馆”
由于某种原因未进行检查。
我可以发誓我已经检查过了,但是
了解Android的异想天开
下的开发环境
Eclipse可以,我怀疑
未被Eclipse(或ADT)选中
插件)。
在应用程序项目中,我
忽略添加我的图书馆项目
通过ѭ4作为参考
按钮。 (我有多蠢?)
我希望像我这样的其他新手也能对本信息有所帮助。有时候,当一个无辜的,毫无疑虑的程序员认为这已经得到解决时,调试的一个极其困难的问题隐藏了配置错误。
, 在我的一个项目中,我遇到了同样的错误,并认为我可以分享自己的解决方法。
在项目的某个时刻,我不得不更改我正在使用的所有Activity类所在的包名称之一。当我这样做时,我忘记了更新AndroidManifest,这导致了我同样的错误。更新此问题已解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。