DEV Community

Query Filter
Query Filter

Posted on

Stray class

import java.lang.reflect.Field;
import java.util.Vector;

public class StrayClassFinder {

public static Class<?> findLoadedClass(String targetClassName, boolean printAll) {
    try {
        // Get the system class loader
        ClassLoader cl = ClassLoader.getSystemClassLoader();

        // Get the private "classes" field from ClassLoader
        Field classesField = ClassLoader.class.getDeclaredField("classes");
        classesField.setAccessible(true);

        // Get all loaded classes as a Vector
        @SuppressWarnings("unchecked")
        Vector<Class<?>> classes = (Vector<Class<?>>) classesField.get(cl);

        for (Class<?> clazz : classes) {
            if (printAll) {
                System.out.println("Loaded class: " + clazz.getName());
            }

            if (clazz.getName().equals(targetClassName)) {
                System.out.println("✅ Found target class: " + clazz.getName());
                return clazz;
            }
        }
    } catch (Throwable t) {
        System.err.println("Error during class scan: " + t);
        t.printStackTrace();
    }

    System.out.println("❌ Target class not found: " + targetClassName);
    return null;
}

public static void main(String[] args) {
    // Example usage
    Class<?> found = findLoadedClass("com.quantum.ConfigRepository", true);
    if (found != null) {
        System.out.println("Found class: " + found);
    }
}
Enter fullscreen mode Exit fullscreen mode

}

Top comments (0)