Find all classes from package in maven dependency
我试图使用反射库从”scala”包中获取所有类,但没有成功(测试失败):
1
2 3 4 5 6 7 8 9 10 11 12 13 |
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() return reflections.getSubTypesOf(Object.class).stream().collect(Collectors.toList()); |
我的测试方法是:
1
2 3 4 5 6 7 8 |
@Test
public void classFinderTest() { String packageName =“scala”; List<Class< ? >> listClasses = ClassFinder.getClassesFromPackage(packageName); assertFalse(“the list is empty”, listClasses.isEmpty()); |
在我的 pom.xml 中声明了 scala 库依赖项:
1
2 3 4 5 |
<dependency>
<groupId>org.scala–lang</groupId> scala–library</artifactId> <version>2.11.6</version> </dependency> |
我需要使用 java 代码来做这件事。
我想以编程方式获取属于某个特定包的所有类。例如,如果 packageName 是”scala”,我想要一个包含:scala.Int、scala.Double、scala.Enumeration 等的列表。
谁能提供一些想法来找到解决方案?
- 我不确定您到底在寻找什么,请查看此 stackoverflow.com/questions/15720822/…
- @user Reflections 和 ClasspathHelper 类来自反射库:我在问题中指定的 code.google.com/p/reflections。
- @user2985467 我已经看到该页面,但我不知道如何访问 scala-library.jar,因为它在我的 maven 依赖项中,所以我无法使用该页面中提供的解决方案来提供答案.
一个工作的测试类(Test.java)是
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.Set;
import org.reflections.Reflections; public class Test { return reflections.getSubTypesOf(Object.class); public static void main(String … args) { |
(在类路径中包含所有必要的库)。
使用 Reflections(String prefix, Scanner… scanners)
可以简化您的代码。
来源:https://www.codenong.com/33239604/