public static ClassLoader reloader() { Predicate<String> veto = ReloadUtil::isReloadForbidden; return Reload.createClassLoader(veto); }
protected void reload() { Set<String> filenames = U.set(); filenames.addAll(createdFilenames); filenames.addAll(modifiedFilenames); Log.debug("Detected changes in classes", "created", createdFilenames, "modified", modifiedFilenames, "deleted", deletedFilenames); try { List<String> classnames = filenamesToClassnames(filenames); List<Class<?>> classes = Reload.reloadClasses(folders, classnames, veto); refresher.refresh(classes, filenamesToClassnames(deletedFilenames)); } catch (Exception e) { e.printStackTrace(); } }
public static ClassReloader createClassLoader(Predicate<String> veto) { return createClassLoader(ClasspathUtil.getClasspathFolders(), veto); }
public static synchronized List<Class<?>> reloadClasses(Collection<String> classpath, List<String> classnames, Predicate<String> veto) { ClassReloader classLoader = Reload.createClassLoader(classpath, veto); List<Class<?>> classes = U.list(); for (String className : classnames) { try { classes.add(classLoader.loadClass(className)); } catch (Throwable e) { Log.debug("Couldn't reload class!", "error", e); } } return classes; }
public static ClassLoader reloader() { return Reload.createClassLoader(); }