я пытался получить все классы из пакета «Скалы» с использованием the reflections library, но без успеха (тест отсутствие):Найти все классы из пакета в Maven зависимости
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());
}
Моего метод испытания:
@Test
public void classFinderTest() {
String packageName = "scala";
List<Class<?>> listClasses = ClassFinder.getClassesFromPackage(packageName);
assertFalse("the list is empty", listClasses.isEmpty());
}
зависимость библиотеки Scala объявлена в моем pom.xml:
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.6</version>
</dependency>
Я урожденная d сделать это с помощью java-кода.
Я хочу программно получить все классы, которые являются частью определенного пакета. Например, если packageName является «scala», мне нужен список, содержащий: scala.Int, scala.Double, scala.Enumbereration и т. Д.
Может ли кто-нибудь предложить мне некоторые идеи, чтобы найти решение?
Я не уверен, что именно вы ищете, проверьте это http://stackoverflow.com/questions/15720822/how-to-get-names-of-classes-inside-a-jar-file – Krish
@user классы Reflections и ClasspathHelper взяты из библиотеки отражений: https://code.google.com/p/reflections/, как я указал в вопросе. – PedroHidalgo
@ user2985467 Я уже вижу эту страницу, но я не знаю, как получить доступ к scala-library.jar, потому что это в моей зависимости от maven, поэтому я не могу использовать решение, обеспечивающее ответ на этой странице. – PedroHidalgo