Java 如何在注释处理器中确定注释元素的类路径?
我有@Foo注释和相应的FooProcessor。在那里,我需要项目根的位置,如果我知道如何获取它,我可以从class/java文件的位置解析它 例如 在另一个项目中,它有一个包含Foo注释的jar及其处理器: /this/part/may/change/someproject/src/Foobar.javaJava 如何在注释处理器中确定注释元素的类路径?,java,eclipse,annotations,classpath,Java,Eclipse,Annotations,Classpath,我有@Foo注释和相应的FooProcessor。在那里,我需要项目根的位置,如果我知道如何获取它,我可以从class/java文件的位置解析它 例如 在另一个项目中,它有一个包含Foo注释的jar及其处理器: /this/part/may/change/someproject/src/Foobar.java public class Foobar{ @Foo public void foobar(){} } =>我需要FooProcessor::getProjectRoot返回/th
public class Foobar{
@Foo public void foobar(){}
}
=>我需要FooProcessor::getProjectRoot返回/this/part/may/change/someproject/,如果我从FooProcessor::getclassfileorwhich获得/this/part/may/change/someproject/src/Foobar.java,这显然是微不足道的
好像是新文件。使用Eclipse编译带有注释的方法的类时,引用我的主目录。我可以从那里遍历文件树,并希望element.getEnclosuringElement表示的类文件就在那里的某个地方。但是,由于编译环境不同,这似乎非常缓慢且容易出错。这就成功了:
FooProcessor.class.getProtectionDomain().getCodeSource().getLocation().toString();
这基本上为我提供了所用jar文件的路径,在我的例子中,我可以使用该路径来确定项目根
FooProcessor.class.getProtectionDomain().getCodeSource().getLocation().toString();