InjectorClassLoader(final InjectorPluginLoader loader, final ClassLoader parent, File file) throws InvalidPluginException, MalformedURLException {
        super(new URL[] { file.toURI().toURL() }, parent);
                
        Validate.notNull(loader, "Loader cannot be null");
        
        this.loader = loader;
        this.file = file;
        
        if (!file.getName().endsWith(".class")) {
            throw new IllegalArgumentException("File is not a class file!");
        }
        
        try {
            String name = file.getName().substring(0, file.getName().indexOf("."));
            
            Class clazz = Class.forName(name, true, this);
            Object o = clazz.newInstance();
            
            if (o instanceof InjectablePlugin) {
                this.plugin = (InjectablePlugin) o;
            } else {
                throw new InvalidPluginException("THERE WAS A GOD DAMN ERROR WITH THE INSTANCE");
            }
        } catch (IllegalAccessException ex) {
            throw new InvalidPluginException("No public constructor", ex);
        } catch (InstantiationException ex) {
            throw new InvalidPluginException("Abnormal plugin type", ex);
        } catch (ClassNotFoundException ex) {
            throw new InvalidPluginException("Plugin Class not found", ex);
        }
    }