Im пишущий обработчик аннотации для проектов android. Я хочу получить абсолютный путь к папке ресурсов андроидов (я знаю, что он настраивается с помощью градиента, но я сейчас игнорирую этот случай).Получить путь к файлу рабочего каталога
Моя идея заключается в том, чтобы получить полный путь к обрабатываемой элемента:
@MyAnnotation public class Foo{ ... }
Так что в моем AnnotationProcessor я хочу, чтобы получить путь к Foo.java
.
@Override public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
for (Element element : roundEnv.getElementsAnnotatedWith(MyAnnotation.class))
try {
ProcessorMessage.info(element, "Path: %s %s", getWorkingDir(), getExecutionPath());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
ProcessorMessage.error(element, "Error " + e.getMessage());
}
return false;
}
private String getExecutionPath() throws UnsupportedEncodingException {
String path = AnnotatedAdapterProcessor.class.getProtectionDomain()
.getCodeSource()
.getLocation()
.getPath();
String decodedPath = URLDecoder.decode(path, "UTF-8");
return decodedPath;
}
private String getWorkingDir() {
Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString();
return s;
}
Однако это дает мне следующий вывод:
Путь: /Users/XXXXX/.gradle/daemon/1.12 /Users/XXXXX/.m2/repository/com/example/myprocessor/processor/ 0.1.2-SNAPSHOT/processor-0.1.2-SNAPSHOT.jar
Есть ли способ получить путь, по которому находится Foo.java
? (Просто чтобы получить начальную точку, откуда я продолжу поиск папки с ресурсами)