2015-08-27 62 views
-2

我正在處理的(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設備上運行時出現無法解釋的錯誤,而不是在我的計算機上運行。

+1

忘記初始化classloader本身,不是嗎? – SimY4

+0

classLoader在調用attemptLoadClass()的函數中進行初始化() –

+0

向我們顯示堆棧跟蹤。 –

回答

0

你似乎在說,NPE是由下面這行代碼拋出:

Class<?> c = classLoader.loadClass(classname); 

如果是這樣,只有一個可能的解釋:classloadernull

+0

不會從該行拋出異常,而是從該函數調用中拋出異常。 –

+0

向我們展示堆棧跟蹤!和創建類加載器的代碼。 –

相關問題