package org.radargun.config; import java.io.File; import java.util.Vector; import io.github.lukehutch.fastclasspathscanner.classloaderhandler.ClassLoaderHandler; import io.github.lukehutch.fastclasspathscanner.scanner.ClasspathFinder; import io.github.lukehutch.fastclasspathscanner.utils.ReflectionUtils; /** * Allows loading classes from AntClassLoader */ public class AntClassLoaderHandler implements ClassLoaderHandler { @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; } }