2013-10-24 42 views
0

我試圖動態地添加jar到我的程序classpath在運行時使用THIS方法我發現,因爲它看起來像很多人的工作。當使用addPlugin()時,它拋出一個NoSuchMethodException(在下面的代碼中註釋)。NoSuchMethodException當動態添加jar到類路徑

有人可以告訴我我錯過了什麼,爲了得到這個工作?我對此並不太熟悉,我曾嘗試過查找它。

public final class PluginLoader { 
    private static final Class[] _PARAMS = new Class[] {URL.class}; 

    public static void addPlugin(File plugin) throws PluginException { 
     URLClassLoader plLoader = (URLClassLoader)ClassLoader.getSystemClassLoader(); 
     Class plClass = URLClassLoader.class; 
     try { 
       Method m = plClass.getDeclaredMethod("addPlugin", _PARAMS); //ERROR HERE 
       m.setAccessible(true); 
       m.invoke(plLoader, new Object[] {plugin.toURI().toURL()}); 
     } catch (Exception ex) { 
       ex.printStackTrace(); 
       throw new PluginException("ERROR: Could not add plugin '" + plugin.getName() + "' to System ClassLoader"); 
     } 
    } 
} 

用法:

PluginLoader.addPlugin(new File("../path/to/jar.jar")); 
Constructor<?> cs = ClassLoader.getSystemClassLoader().loadClass("my.main.class.Main").getConstructor(String.class); 

回答

0

變化:

Method m = plClass.getDeclaredMethod("addPlugin", _PARAMS); 

到:

Method m = plClass.getDeclaredMethod("addURL", _PARAMS); 
相關問題