我正在处理的(Android)应用程序的一部分需要一个'插件'用户可以将自己的代码放入jar文件夹中的文件夹。该应用程序将扫描该文件夹中的jar文件,并尝试加载它找到的所有类。现在,应用程序根本没有加载任何类,因为似乎所有对URLClassLoader.loadClass()的调用都会产生一个空指针。
private static URLClassLoader classLoader;
private static List<Class<? extends OpMode>> opModeList;
private static void attemptLoadClass(String entryname) {
String classname = entryname.replace('/', '.');
classname = classname.substring(0, classname.length() - 6);
try {
Class<?> c = classLoader.loadClass(classname);
// ^^^ Problems are happening right here ^^^
Object instance = c.newInstance();
if (instance instanceof OpMode) {
opModeList.add(((OpMode)instance).getClass());
}
} catch (Throwable ex) {
ex.printStackTrace();
}
}
classLoader由一个URL数组构成,该URL数组通向需要加载的所有jar文件。我还应该提一下,代码只会在Android设备上运行时出现无法解释的错误,而不是在我的计算机上运行。
答案 0 :(得分:0)
你似乎在说NPE被这行代码抛出:
Class<?> c = classLoader.loadClass(classname);
如果有,则只有一种可能的解释:classloader
为null
。