diff --git a/muyu-rule-common/src/main/java/rule/util/ExternalClassLoader.java b/muyu-rule-common/src/main/java/rule/util/ExternalClassLoader.java new file mode 100644 index 0000000..40851c9 --- /dev/null +++ b/muyu-rule-common/src/main/java/rule/util/ExternalClassLoader.java @@ -0,0 +1,23 @@ +package rule.util; + +import java.io.IOException; +import java.net.URL; +import java.net.URLClassLoader; +import java.nio.file.Files; +import java.nio.file.Path; + +public class ExternalClassLoader extends URLClassLoader { + + public ExternalClassLoader(URL[] urls) { + super(urls, Thread.currentThread().getContextClassLoader()); + } + + public Class defineClassFromBytes(byte[] classBytes, String className) throws IOException { + return super.defineClass(className, classBytes, 0, classBytes.length); + } + + public Class loadClassFromPath(Path classFilePath, String className) throws IOException { + byte[] classData = Files.readAllBytes(classFilePath); + return defineClassFromBytes(classData, className); + } +}