Java 如何在注释处理器中确定注释元素的类路径?

Java 如何在注释处理器中确定注释元素的类路径?,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

我有@Foo注释和相应的FooProcessor。在那里,我需要项目根的位置,如果我知道如何获取它,我可以从class/java文件的位置解析它

例如

在另一个项目中,它有一个包含Foo注释的jar及其处理器:

/this/part/may/change/someproject/src/Foobar.java

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();