@Override
    protected Class<?> loadClass(final String name, final boolean resolve) throws ClassNotFoundException {
        synchronized (this.getClassLoadingLock(name)) {
            // If a class of the specified name has already been loaded by this class loader, or the parent class loader,
            // find the loaded class, and return it.
            final Class<?> loadedClass = this.findLoadedClass(name);
            if (loadedClass != null) {
                return this.resolveClassIfNeeded(loadedClass, resolve);
            }

            // If a class of the specified name has not been loaded yet, and is found by this (not parent) class loader,
            // find it, and return it.
            try {
                return this.resolveClassIfNeeded(this.findClass(name), resolve);
            } catch (final ClassNotFoundException ignored) {
                // Passing through intentionally.
            }

            // If a class of the specified name is found by this class loader (not by the parent class loader),
            // find it, and return it.
            try {
                return this.resolveClassIfNeeded(this.getParent().loadClass(name), resolve);
            } catch (final ClassNotFoundException ignored) {
                // Passing through intentionally.
            }

            throw new ClassNotFoundException(name);
        }
    }
Loads the class with the specified binary name from JRuby.

<p>It prioritizes a class found by this class loader over a class loaded by the parent class loader.
embulk-core/src/main/java/org/embulk/jruby/JRubyClassLoader.java