我正在處理的(Android)應用程序的一部分需要用戶可以將自己的代碼放入的'plugins'文件夾,作爲jar文件。該應用程序將掃描文件夾中的jar文件,並嘗試加載它找到的所有類。目前,該應用根本沒有加載任何類,因爲它看起來對URLClassLoader.loadClass()的所有調用都會產生空指針。URLClassLoader在加載類時拋出NullPointerException
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數組構造的,它導致所有需要加載的jar文件。我還應該提到,代碼只能在Android設備上運行時出現無法解釋的錯誤,而不是在我的計算機上運行。
忘記初始化classloader本身,不是嗎? – SimY4
classLoader在調用attemptLoadClass()的函數中進行初始化() –
向我們顯示堆棧跟蹤。 –