我有一个annotation-processor java应用程序,它正在查看类文件的外部maven项目的target文件夹。这个应用程序使用URLClassLoader。目标文件夹是绝对路径app参数。我有一个简单的junit测试,它可以成功地加载类并处理注释。现在,我编写了maven插件,它只是annotation-processor应用程序的包装器。当运行这个maven插件时,annotation-processor会加载这些类,但是它在这些类中没有看到任何注释。如何从maven插件访问类/接口注释?
private static Class<?> getClass(String path, String className, String packageName) {
File file = new File(path);
try {
URL[] urls = new URL[]{file.toURI().toURL()};
ClassLoader cl = new URLClassLoader(urls);
return cl.loadClass(packageName + "." + className));
} catch (MalformedURLException | ClassNotFoundException e) {
log.warn("Cannot find class: " + packageName + "." + className, e);
}
return null;
}示例呼叫:
Class clazz = getClass("/home/user/java/my-project/target/classes", "MyClass", "com.my.example.package");
assert clazz.getAnnotations() > 0;发布于 2022-08-08 11:48:54
有两个可能的原因:
在加载类时,您的注释没有适当的@Retention
。
https://stackoverflow.com/questions/73276971
复制相似问题