ClassLoaderUtils { public static Class<?> findLoadedClass(ClassLoader classLoader, String className) { Class<?> loadedClass = null; Set<ClassLoader> classLoaders = getInheritableClassLoaders(classLoader); try { for (ClassLoader loader : classLoaders) { loadedClass = (Class<?>) findLoadedClassMethod.invoke(loader, className); if (loadedClass != null) { break; } } } catch (Exception ignored) { } return loadedClass; }  static int getLoadedClassCount(); static long getUnloadedClassCount(); static boolean isVerbose(); static void setVerbose(boolean value); static long getTotalLoadedClassCount(); static Set<Class<?>> findLoadedClasses(ClassLoader classLoader, Set<String> classNames); static boolean isLoadedClass(ClassLoader classLoader, Class<?> type); static boolean isLoadedClass(ClassLoader classLoader, String className); static Class<?> findLoadedClass(ClassLoader classLoader, String className); @Nullable static Class<?> loadClass(@Nonnull ClassLoader classLoader, @Nonnull String className); static Set<URL> getResources(ClassLoader classLoader, ResourceType resourceType, String resourceName); static Set<URL> getResources(ClassLoader classLoader, String resourceName); static URL getResource(ClassLoader classLoader, String resourceName); static URL getResource(ClassLoader classLoader, ResourceType resourceType, String resourceName); static URL getClassResource(ClassLoader classLoader, String className); static URL getClassResource(ClassLoader classLoader, Class<?> type); @Nonnull static Set<ClassLoader> getInheritableClassLoaders(ClassLoader classLoader); @Nonnull static Map<ClassLoader, Set<Class<?>>> getAllLoadedClassesMap(ClassLoader classLoader); @Nonnull static Set<Class<?>> getAllLoadedClasses(ClassLoader classLoader); @Nonnull static Set<Class<?>> getLoadedClasses(ClassLoader classLoader); static Set<Class<?>> findLoadedClassesInClassPath(ClassLoader classLoader); static Set<Class<?>> findLoadedClassesInClassPaths(ClassLoader classLoader, Set<String> classPaths); static Set<Class<?>> findLoadedClassesInClassPath(ClassLoader classLoader, String classPath);  }
@Test public void testFindLoadedClass() { Class<?> type = null; for (Class<?> class_ : ClassLoaderUtils.getAllLoadedClasses(classLoader)) { type = ClassLoaderUtils.findLoadedClass(classLoader, class_.getName()); Assert.assertEquals(class_, type); } type = ClassLoaderUtils.findLoadedClass(classLoader, String.class.getName()); Assert.assertEquals(String.class, type); type = ClassLoaderUtils.findLoadedClass(classLoader, Double.class.getName()); Assert.assertEquals(Double.class, type); }