当前位置: 首页 > 面试题库 >

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

邹胜泫
2023-03-14
问题内容

在将运行良好的应用程序转换为库(包括其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>

我会很想尝试解决此问题的任何提示,因为这是我第一次尝试使用库项目,并且我不熟悉使此工作正常进行的“技巧”。


问题答案:

我终于解决了问题。事实证明,两个项目的“属性”中有2个关键设置均未正确设置:

  1. 在图书馆项目中,由于某些原因 选中“是图书馆” 。我可以保证已经检查过,但是知道Eclipse下的Android开发环境有多么怪异,我怀疑由于某些故障,Eclipse(或ADT插件)没有对其进行检查。
  2. 在应用程序项目中,我忽略了通过Add... 按钮添加我的库项目作为参考。(我有多蠢?)

我希望像我这样的其他新手也会对本信息有所帮助。有时候,当一个无辜的,毫无疑虑的程序员认为这已经得到解决时,调试的一个极其困难的问题隐藏了配置错误。



 类似资料:
  • 新的“库+包装器”应用程序似乎运行良好。我可以运行多次,没有错误。但一天后(可能操作系统已经关闭了应用程序的部分或全部活动),我试着运行它,它报告了 它未能找到的类是程序启动时运行的第一个类MyGameApplicationClass--它扩展了。这个类是图书馆的一部分。 我怀疑两个清单文件中的一个有什么愚蠢的东西。 编辑:我现在不能重复崩溃:-(我不知道当应用程序一两天不使用时,操作系统会做什么

  • 很好的一天!我正在努力解决这个问题一周,这是以前没有的(也就是说,这个程序以前是有效的)。 问题:我的登录表单的GUI将不再加载。 给定:(LoginScreen类视图) 我的login_screenxml代码: 最后,我的AndroidID清单。xml 这是我的Logcat输出: 注意:每当我在“扩展活动”之后删除代码“implements JPacketListener”,并删除它的方法(on

  • 我的应用程序运行得很好,我可以从一个活动转到另一个活动,然后我添加了一些Toast消息用于注册按钮,然后我在尝试从MainActivity转到RegistrationActivity时遇到了这个错误。。 美娜ctivity.kt 注册ctivity.kt activity_main.xml 活动注册。xml 显示 和logchat 2019-12-09 09:08:16.171 28691-286

  • 问题内容: 我在android系统中是个菜鸟,并且正在做一个宠物项目来锻炼身体。这是一个非常简单的类似提醒的应用程序,只有两个活动。一种是自定义的ListView,用于显示现有警报。其中有一些按钮可以启动另一个按钮,用于添加/编辑警报。其中有一个按钮可引至上一个ListView活动。 我最近遇到了一个奇怪的情况。我的应用程序运行正常。但是问题是,每当我触发添加/编辑活动,然后返回到ListView

  • 我目前正在一个android项目,当试图运行后构建的应用程序平原崩溃。以下是LogCat详细信息: 2021-11-13 13:37:08.105 11908-11908/com.example.finalprojectE/AndroidRuntime: FATAL EXCEPTION:主进程:com.example.finalproject, PID: 11908java.lang.Runtim

  • 我是新的在这个我只是创建standart应用程序(hello world),它的工作。之后我尝试使用图书馆。我将这一行添加到我的build.gradle:中,当我试图启动应用程序时,我立即得到一个错误:“P4已经停止”,“P4保持停止”。Logcat看起来如下所示:2020-10-23 15:34:35.646 207 99-20799/com.example.p4 E/AndroidRuntim