首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用maven插件处理接口注释

用maven插件处理接口注释
EN

Stack Overflow用户
提问于 2022-08-08 11:13:23
回答 1查看 49关注 0票数 0

我有一个annotation-processor java应用程序,它正在查看类文件的外部maven项目的target文件夹。这个应用程序使用URLClassLoader。目标文件夹是绝对路径app参数。我有一个简单的junit测试,它可以成功地加载类并处理注释。现在,我编写了maven插件,它只是annotation-processor应用程序的包装器。当运行这个maven插件时,annotation-processor会加载这些类,但是它在这些类中没有看到任何注释。如何从maven插件访问类/接口注释?

  • maven-plugin-plugin:3.6.4
  • java 11.0.15

代码语言:javascript
复制
    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;
    }

示例呼叫:

代码语言:javascript
复制
Class clazz = getClass("/home/user/java/my-project/target/classes", "MyClass", "com.my.example.package");
assert clazz.getAnnotations() > 0;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-08 11:48:54

有两个可能的原因:

在加载类时,您的注释没有适当的@Retention

  • JVM静默删除有关注释的信息--如果类加载器对注释类一无所知,这很可能是您的情况,因为您正在实例化新的类加载器而不指定父类

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73276971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档