@Override
    protected Class<?> findClass(String string) throws ClassNotFoundException {

        // Search only within the given URLs
        try {
            return super.findClass(string);
        }

        // Search parent classloader ONLY if not found within given URLs
        catch (ClassNotFoundException e) {
            return parent.loadClass(string);
        }

    }
Creates a new ExtensionClassLoader configured to load classes from the
given extension .jar. If a necessary class cannot be found within the
.jar, the given parent ClassLoader is used. Calling this function
multiple times will not affect previously-returned instances of
ExtensionClassLoader.

@param extension
    The extension .jar file from which classes should be loaded.

@param temporaryFiles
    A modifiable List that should be populated with all temporary files
    created for the given extension. These files should be deleted on
    application shutdown in reverse order.

@param parent
    The ClassLoader to use if class resolution through the extension
    .jar fails.

@throws GuacamoleException
    If the given file is not actually a file, or the contents of the
    file cannot be read.
guacamole/src/main/java/org/apache/guacamole/extension/ExtensionClassLoader.java