package de.dhbwstuttgart.environment; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import java.util.stream.Collectors; public class DirectoryClassLoader extends URLClassLoader implements IByteArrayClassLoader { public DirectoryClassLoader(File directory, java.lang.ClassLoader parent) { super(generateURLArray(dirToURL(directory)), parent); } public DirectoryClassLoader(List directory, java.lang.ClassLoader parent) { super(directory.stream().map(DirectoryClassLoader::dirToURL).collect(Collectors.toList()).toArray(new URL[0]), parent); } private static URL[] generateURLArray(URL url) { return new URL[]{url}; } private static URL dirToURL(File url){ if(!url.isDirectory())throw new RuntimeException(url.toString() + " is not a directory"); try { return url.toURI().toURL(); } catch (MalformedURLException e) { throw new RuntimeException(e); } } @Override public Class _defineClass(String name, byte[] code, int i, int length) throws ClassFormatError { return defineClass(name, code, i, length); } @Override public Class findClass(String name) throws ClassNotFoundException { return super.findClass(name); } }