如何在类路径中访问jar中的所有package-info类?我想访问这些类中使用的包级别注释.
我想做以下步骤: -
小智 6
有一个更简单的解决方案,不涉及外部API.您可以从位于要为其注释的包中的类获取Package对象.然后通过调用包上的方法getAnnotations()来获取这些注释:
import java.lang.annotation.Annotation;
public class PackageAnnotationsTest {
public static void main(String[] args) {
Package myPackage = AClassInMyPackage.class.getPackage();
Annotation[] myPackageAnnotations = myPackage.getAnnotations();
System.out.println("Available annotations for package : " + myPackage.getName());
for(Annotation a : myPackageAnnotations) {
System.out.println("\t * " + a.annotationType());
}
}
}
Run Code Online (Sandbox Code Playgroud)
感谢这个帮助我解决这个问题的链接.我第一次看到这个帖子和Parikshit的答案,但我不想使用外部api.
番石榴14+来救援:)
以下代码有效
public class OwnerFinder {
public static void main(String[] args) {
try {
ClassPath classPath = ClassPath.from(OwnerFinder.class.getClassLoader());
classPath.getTopLevelClassesRecursive("com.somepackage")
.stream()
.filter(c -> c.getSimpleName().equals("package-info"))
.map(c -> c.load().getPackage().getAnnotation(PackageOwner.class))
.forEach(a -> System.out.println(a.owner()));
} catch(IOException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
下面是package-info.java的注释应用
@PackageOwner(owner = "shaikhm")
package com.somepackage;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3539 次 |
| 最近记录: |