if (addClassLoaderHandler(scanSpec, classLoader, classLoaderHandlerRegistryEntry, foundClassLoaders, allClassLoaderHandlerRegistryEntries, classLoaderAndHandlerOrderOut, ignoredClassLoaderAndHandlerOrderOut, log)) { + "https://github.com/lukehutch/fast-classpath-scanner/issues"); addClassLoaderHandler(scanSpec, classLoader, ClassLoaderHandlerRegistry.FALLBACK_CLASS_LOADER_HANDLER, foundClassLoaders, allClassLoaderHandlerRegistryEntries, classLoaderAndHandlerOrderOut,
@Override public boolean handle(ClassLoader classloader, ClasspathFinder classpathFinder) throws Exception { for (Class<?> c = classloader.getClass(); c != null; c = c.getSuperclass()) { if ("org.apache.tools.ant.AntClassLoader".equals(c.getName())) { Object pathComponents = ReflectionUtils.getFieldVal(classloader, "pathComponents"); if (pathComponents != null && pathComponents instanceof Vector) { for (File file : ((Vector<File>) pathComponents)) { classpathFinder.addClasspathElement(file.getAbsolutePath()); } } return true; } } return false; } }
findClassLoaderHandlerForClassLoaderAndParents(scanSpec, parent, foundClassLoaders, allClassLoaderHandlerRegistryEntries, scanSpec.ignoreParentClassLoaders ? ignoredClassLoaderAndHandlerOrderOut findClassLoaderHandlerForClassLoaderAndParents(scanSpec, parent, foundClassLoaders, allClassLoaderHandlerRegistryEntries, scanSpec.ignoreParentClassLoaders ? ignoredClassLoaderAndHandlerOrderOut
final ClasspathFinder classpathFinder = new ClasspathFinder(scanSpec, nestedJarHandler, getRawElementsLog); final ClassLoaderAndModuleFinder classLoaderAndModuleFinder = classpathFinder .getClassLoaderAndModuleFinder(); final ClassLoader[] classLoaderOrder = classLoaderAndModuleFinder.getClassLoaders(); final List<RelativePath> rawClasspathEltOrder = new ArrayList<>(); && !scanSpec.blacklistedModules.contains("")) { rawClasspathEltOrder.addAll(classpathFinder.getRawClasspathElements()); } else { if (log != null) {
@Override public void handle(final ScanSpec scanSpec, final ClassLoader classLoader, final ClasspathOrder classpathOrderOut, final LogNode log) throws Exception { // type ClassLoader final Object parentContextClassLoader = ReflectionUtils.getFieldVal(classLoader, "parentContextClassLoader", false); if (parentContextClassLoader != null) { final ClassLoaderHandler parentContextClassLoaderHandler = ClasspathFinder .findClassLoaderHandlerForClassLoader(scanSpec, classLoader, log); LogNode subLog = log; if (log != null) { subLog = log.log("Delegating to parentContextClassLoader: " + parentContextClassLoader); } parentContextClassLoaderHandler.handle(scanSpec, classLoader, classpathOrderOut, subLog); } } }
if (!scanSpec.blacklistSystemJars() || !envClassLoader.getClass().getName().startsWith("sun.misc.Launcher$ExtClassLoader")) { findClassLoaderHandlerForClassLoaderAndParents(scanSpec, envClassLoader, /* foundClassLoaders = */ new LinkedHashSet<ClassLoader>(), allClassLoaderHandlerRegistryEntries, classLoaderAndHandlerOrder,