bumptech/glide · error · IllegalArgumentException

Unable to find GlideModule implementation

Error message

Unable to find GlideModule implementation

What it means

Thrown by ManifestParser.parseModule when Class.forName(className) raises ClassNotFoundException for a class name declared in AndroidManifest.xml meta-data with value 'GlideModule'. This entire GlideModule/ManifestParser mechanism is deprecated in favor of AppGlideModule/LibraryGlideModule discovered via the @GlideModule annotation and the Glide annotation processor (complier).

Source

Thrown at library/src/main/java/com/bumptech/glide/module/ManifestParser.java:81

      if (Log.isLoggable(TAG, Log.DEBUG)) {
        Log.d(TAG, "Finished loading Glide modules");
      }
    } catch (PackageManager.NameNotFoundException e) {
      if (Log.isLoggable(TAG, Log.ERROR)) {
        Log.e(TAG, "Failed to parse glide modules", e);
      }
    }

    return modules;
  }

  @SuppressWarnings("deprecation")
  private static GlideModule parseModule(String className) {
    Class<?> clazz;
    try {
      clazz = Class.forName(className);
    } catch (ClassNotFoundException e) {
      throw new IllegalArgumentException("Unable to find GlideModule implementation", e);
    }

    Object module = null;
    try {
      module = clazz.getDeclaredConstructor().newInstance();
      // These can't be combined until API minimum is 19.
    } catch (InstantiationException e) {
      throwInstantiateGlideModuleException(clazz, e);
    } catch (IllegalAccessException e) {
      throwInstantiateGlideModuleException(clazz, e);
    } catch (NoSuchMethodException e) {
      throwInstantiateGlideModuleException(clazz, e);
    } catch (InvocationTargetException e) {
      throwInstantiateGlideModuleException(clazz, e);
    }

    if (!(module instanceof GlideModule)) {
      throw new RuntimeException("Expected instanceof GlideModule, but found: " + module);

View on GitHub (pinned to eb14a895d8)

Solutions

  1. Migrate to the modern API: create a class extending AppGlideModule (and optionally LibraryGlideModule) annotated with @GlideModule, add the Glide annotation processor dependency, and remove the manifest meta-data entry
  2. If staying on the deprecated path, verify the fully-qualified class name in AndroidManifest.xml exactly matches the compiled class
  3. Add a ProGuard/R8 keep rule (-keep public class * implements com.bumptech.glide.module.GlideModule) so the class survives minification
  4. Ensure the library containing the module class is an actual compile dependency of the app module

Example fix

// before (AndroidManifest.xml)
<meta-data android:name="com.example.MyModule" android:value="GlideModule"/>

// after - AppGlideModule.kt
@GlideModule
class MyAppGlideModule : AppGlideModule() {
  override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
    // custom registration
  }
}
// remove the <meta-data> entry and add annotationProcessor 'com.github.bumptech.glide:compiler:VERSION'
Defensive patterns

Strategy: validation

Validate before calling

// Before relying on manifest modules, verify the class is loadable on the classpath:
try {
  Class.forName("com.example.MyGlideModule")
} catch (e: ClassNotFoundException) {
  // fix the manifest entry or migrate to @GlideModule
}

Prevention

When it happens

Trigger: An <meta-data android:name="..." android:value="GlideModule"/> entry in AndroidManifest.xml references a class that was renamed, moved, removed, kept in a library that is no longer compiled in, or whose fully-qualified name is misspelled. Also triggered by ProGuard/R8 stripping the module class at release build time.

Common situations: Upgrading a Glide 3.x app to 4.x without migrating to annotation-processor modules; release/minified builds where the module class is shrunk; refactoring that changed the package path without updating the manifest; multi-module projects where the manifest references a class from a feature module that isn't packaged.

Related errors


AI-assisted analysis of bumptech/glide@eb14a895d8 (2026-08-14). Data as JSON: /api/errors/1326e0b65baa146d. Report an issue: GitHub.