如何从另一个没有包名的类加载器加载一个类?

时间:2014-03-07 16:12:51

标签: java android classloader dex

我需要知道如何加载一个没有包的类,使用不同的类加载器(test.jar包含classes.dex文件):

File f = new File("/sdcard/test.jar");
final File optimizedDexOutputPath = context.getDir("outdex", 0);
DexClassLoader classLoader = new DexClassLoader(f.getAbsolutePath(), optimizedDexOutputPath.getAbsolutePath(), null, context.getClassLoader());

如果“Test”类有一个包:

package com.test;

public class Test {
    public static void test() {
        // do something
    }
}

这有效:

Class<?> myClass = classLoader.loadClass("com.test.Test");

如果“Test”类没有包:

public class Test {
    public static void test() {
        // do something
    }
}

这不起作用:

Class<?> myClass = classLoader.loadClass("Test");

是否可以加载没有包的类?

1 个答案:

答案 0 :(得分:0)

没有包名称加载类没有问题。检查我的示例(类“测试”必须没有包):

public class Test {

    public static void main(String[] args)  {
        try {
            Class<?> myClass = Test.class.getClassLoader().loadClass("Test");
            System.out.println(myClass);
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

您将毫无例外地获得控制台输出:

班级考试