我需要知道如何加载一个没有包的类,使用不同的类加载器(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");
是否可以加载没有包的类?
答案 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();
}
}
}
您将毫无例外地获得控制台输出:
班级考试