我正在处理一个 Maven 项目,我将 Guava 依赖项和其他项目的依赖项添加到我的 pom.xml 文件中。我想获取该项目的给定包的所有类,我已将其作为依赖项添加到我的 pom 中。
所以我试过这个:
public void getClassOfPackage() {
final ClassLoader loader = Thread.currentThread()
.getContextClassLoader();
try {
for (final ClassPath.ClassInfo info : ClassPath.from(loader)
.getTopLevelClasses()) {
System.out.println(info.getSimpleName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new TestMain().getClassOfPackage();
}
我知道这是错误的,因为它在控制台中给出了:
HierarchicalConfigurationConverter
HierarchicalConfigurationXMLReader
HierarchicalINIConfiguration
SubsetConfiguration
SystemConfiguration...
我不知道在哪里可以指定我正在谈论的项目,以及如何只传递包名称并为我提供它包含的所有类。
最佳答案
我可以显示在同一个项目中的所有类,但对于在 pom.xml 中添加为依赖项的其他项目还没有:
我们在同一个项目中的解决方案:
public void getClassOfPackage() {
final ClassLoader loader = Thread.currentThread()
.getContextClassLoader();
try {
ClassPath classpath = ClassPath.from(loader); // scans the class path used by classloader
for (ClassPath.ClassInfo classInfo : classpath.getTopLevelClasses("org.mypackage")) {
System.out.println(classInfo.getSimpleName()+" <==> "+classInfo.getPackageName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new TestMain().getClassOfPackage();
}
关于java - 我怎样才能用 Guava 获得给定包的所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28327389/