package com.baselet.element.old.custom; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import com.baselet.control.util.Path; public class FileClassLoader extends ClassLoader { public FileClassLoader() { super(); } public FileClassLoader(ClassLoader parent) { super(parent); } @Override protected Class<?> findClass(String className) throws ClassNotFoundException { Class<?> c = null; try { byte[] data = loadClassData(className); c = defineClass(className, data, 0, data.length); if (c == null) { throw new ClassNotFoundException(className); } } catch (IOException e) { throw new ClassNotFoundException(className, e); } return c; } private byte[] loadClassData(String className) throws IOException { File f = new File(Path.temp() + className + ".class"); byte[] buff = new byte[(int) f.length()]; FileInputStream fis = new FileInputStream(f); DataInputStream dis = new DataInputStream(fis); dis.readFully(buff); dis.close(); Path.safeDeleteFile(f, false); return buff; } }