如何在注释处理期间获取编译类路径?

时间:2015-07-16 11:20:23

标签: java maven classpath annotation-processing

我的尝试是

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] currentClassPath = ((URLClassLoader) cl).getURLs();
String[] classPathStrings = Arrays.stream(currentClassPath).map(url -> {
    try {
        return Paths.get(url.toURI()).toAbsolutePath().toString();
    } catch (URISyntaxException e) {
        throw new RuntimeException(e);
    }
}).toArray(String[]::new);
System.out.println(Arrays.asList(classPathStrings));

在注释处理器的process()方法体中。但它只输出
[C:\Program Files\Maven\boot\plexus-classworlds-2.5.1.jar]

而不是已处理项目的依赖关系。

2 个答案:

答案 0 :(得分:1)

嗯,它足以使用getClass().getClassLoader()。注释处理器上下文中的getClass()

答案 1 :(得分:-1)

我认为在注释处理期间加载项目类不是一个好主意。请记住,创建类是您的工作。因此可能是这些类不可用,或者使用class-laoder会减慢编译过程