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);
}
}
}
Top comments (0)