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;
}
}