直接贴出解决方案:
public void addURL(URL u) { URLClassLoader sysLoader = (URLClassLoader) this.getClass().getClassLoader(); URL urls[] = sysLoader.getURLs(); for (int i = 0; i < urls.length; i++) { // 过滤已加载的jar文件 if (urls[i].toString().equalsIgnoreCase(u.toString())) { return; } } Class sysclass = URLClassLoader.class; try { Method method = sysclass.getDeclaredMethod("addURL", URL.class); method.setAccessible(true); method.invoke(sysLoader, new Object[]{u}); } catch (Throwable t) { LOGGER.error("Error, could not add URL to system classloader", t); } }
可能以上方法不是最优的,但是也是一种解决思路,希望能帮助到大家。