【发布时间】:2020-03-26 00:11:57
【问题描述】:
如何从 Java 中获取特定 jar 文件中的所有包名?
我知道如何获取 jar 中的所有类,但如何仅获取包名?
【问题讨论】:
-
这能回答你的问题吗? How do I find the packages defined in a jar?
-
我需要在 Java 应用程序中执行此操作...
如何从 Java 中获取特定 jar 文件中的所有包名?
我知道如何获取 jar 中的所有类,但如何仅获取包名?
【问题讨论】:
如果您想在 java 代码中执行此操作,则可以使用 JarFile。
列出给定 jar 中的所有类并从中获取所有包(通过从全名中提取其包)。
JarFile jar = ... \\ create from file
jar.stream()
.map(ZipEntry::getName)
.filter(name -> name.endsWith(".class"))
.map(name -> name
.substring(0, name.lastIndexOf('/'))
.replace('/', '.')
)
.distinct()
.forEach(System.out::println);
【讨论】:
replace('/', '.') 比 replaceAll 快,因为它不使用正则表达式。