Java 如何在注释处理期间获取编译类路径?
我的尝试失败了Java 如何在注释处理期间获取编译类路径?,java,maven,classpath,annotation-processing,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()).toAbsol
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:\ProgramFiles\Maven\boot\plexus-classworlds-2.5.1.jar]
而不是已处理项目的依赖项。好吧,使用
getClass().getClassLoader()
就足够了<代码>getClass()在注释处理器上下文中。好吧,使用getClass().getClassLoader()
就足够了<代码>getClass()在注释处理器上下文中。我认为在注释处理过程中加载项目类不是一个好主意。请记住,创建类是您正在做的事情。因此,可能是类不可用,或者使用类laoder会减慢编译过程我认为在注释处理期间加载项目类不是一个好主意。请记住,创建类是您正在做的事情。因此,可能是类不可用,或者使用类laoder会减慢编译过程我知道这已经有一段时间了,但是在我的注释处理器中使用它之后,我仍然得到了进行处理的项目的类路径,而不是处理过的项目。你能对这个答案进行一点扩展吗?我知道已经有一段时间了,但是在我的AnnotationProcessor
中使用它之后,我仍然得到了进行处理的项目的类路径,而不是处理过的项目。你能把这个答案再详细一点吗?