I was trying to get all the classes from the "scala" package using the reflections library, but without success (the test is failing):
public static List<Class<?>> getClassesFromPackage(String packageName) {
List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>();
classLoadersList.add(ClasspathHelper.contextClassLoader());
classLoadersList.add(ClasspathHelper.staticClassLoader());
classLoadersList.add(ClassLoader.getSystemClassLoader());
Reflections reflections = new Reflections(new ConfigurationBuilder()
.setScanners(new SubTypesScanner(false /* don't exclude Object.class */), new ResourcesScanner())
.setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0])))
.filterInputsBy(new FilterBuilder().include(FilterBuilder.prefix(packageName))));
return reflections.getSubTypesOf(Object.class).stream().collect(Collectors.toList());
}
My test method is:
@Test
public void classFinderTest() {
String packageName = "scala";
List<Class<?>> listClasses = ClassFinder.getClassesFromPackage(packageName);
assertFalse("the list is empty", listClasses.isEmpty());
}
The scala library dependency is declared in my pom.xml:
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.6</version>
</dependency>
I need to do this using java code.
I want to programmatically get all the classes that are part of some specific package. For example, if the packageName is "scala", I want a list containing: scala.Int, scala.Double, scala.Enumeration, etc.
Can any one provide me some ideas to find the solution?