4

我在 Android 2.2 SDK 上,无法在 MultiUserChat 类中执行我的静态块。我试图强制加载它

try 
{
    String qual = MultiUserChat.class.getName();
    ClassLoader.getSystemClassLoader().loadClass(qual);
        
} catch (ClassNotFoundException e) {

    e.printStackTrace();
}

它总是会碰到 catch 块。'qual' 获取类的有效名称......它可以是什么?

4

1 回答 1

9

您的应用程序包括 ArrayList 和 Activity 等框架类,以及 FlashlightActivity 等应用程序类。框架类由系统类加载器(以及引导类加载器)加载;应用程序类由应用程序类加载器加载。

系统类加载器只能看到系统类。它不知道应用程序类路径,也不能用于加载应用程序类。您需要使用应用程序类加载器来执行此操作。获取对应用程序类加载器的引用的最简单方法是通过应用程序类:

try {
    String qual = MultiUserChat.class.getName();
    MyActivity.class.getClassLoader().loadClass(qual);
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
于 2012-01-15T14:11:23.130 回答