public static void load(final List<ScriptInfo> scripts, final File file) throws ClassNotFoundException, IOException, IllegalAccessException, InstantiationException {
        final JarFile jar = new JarFile(file);
        final Enumeration<JarEntry> entries = jar.entries();
        while (entries.hasMoreElements()) {
            final JarEntry e = entries.nextElement();
            final String name = e.getName().replace('/', '.').replace('\\', '.');
            if (name.endsWith(".class")) {
                final ClassLoader loader = new URLClassLoader(new URL[]{file.toURI().toURL()}) {
                    public Class loadClass(String name, final boolean resolve) throws ClassNotFoundException {
                        name = name.replace('/', '.').replace('\\', '.');
                        return super.loadClass(name, resolve);
                    }
                };
                final Class<?> clazz = loader.loadClass(name.substring(0, name.length() - 6));
                if (clazz != null) {
                    if (clazz.isAnnotationPresent(ScriptManifest.class)) {
                        final ScriptManifest manifest = clazz.getAnnotation(ScriptManifest.class);
                        scripts.add(new ScriptInfo(manifest.name(), manifest.description(), clazz, manifest.authors(), manifest.version(), manifest.type()));
                    }
                }
            }
        }
    }