java - 如何从 Java 中的注释处理器获取项目的工作目录

标签 java working-directory annotation-processing

我正在用 Java 编写一个注释处理器,在这个注释处理器中,我希望能够在我使用这个注释处理器的项目的项目层次结构中找到一个文件。通过注释,我可以传入我正在搜索的文件相对于项目根目录的路径,但我无法检索项目的工作目录。

假设处理器是 MyCustomProcessor,我在项目 MyProject 上使用它。我希望能够从 MyCustomProcessor 的“process”方法访问(读取)MyProject 项目结构中的文件(属性文件)。

我已阅读此链接 Eclipse - Annotation processor, get project path但是当我使用他们的解决方案时,我从 StandardJavaFileManager.getLocation(StandardLocation.SOURCE_PATH) 调用返回 null。

有关实现的更多详细信息:

我的注释处理器:

@SupportedAnnotationTypes(value = {"MyAnnotation" })
@SupportedSourceVersion(RELEASE_6)
public class MyCustomProcessor extends AbstractProcessor {
...

@Override
public boolean process(final Set<? extends TypeElement> annotations, final RoundEnvironment roundEnv) {
    for (final Element element : roundEnv.getElementsAnnotatedWith(MyAnnotation.class)) {
<!-- Here is where I would like to get the working directory !-->
}
 }
}

有关测试和开发环境的更多详细信息:Eclipse Kepler、JRE 1.7。

如果您需要更多详细信息,请询问。

最佳答案

对该答案的评论指出这个问题是一个解决方案:null JavaCompiler in Eclipse

某些工具未在 JRE 中实现,仅在 JDK 中可用。看来 Eclipse 默认使用 JRE 运行处理器,因此您需要将项目配置为使用 JDK 作为运行时。

关于java - 如何从 Java 中的注释处理器获取项目的工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25192381/

相关文章:

java - 当我使用异步时,按钮 onClick 收到 2 条错误消息

使用下一代插件的 java 小程序

concurrency - Julia 语言 - @async tasks::Current-Directory 中的状态

dart - 如何在 Dart 中设置当前工作目录?

java - 我如何测试注释处理器生成的无 .java 源?

java - APT 如何处理嵌套注解类的注解

java - 编码问题: "São Paulo" becomes "S%C3%A3o%20Paulo" then "São Paulo"

java - Maven项目测试问题

windows - 拖放操作调用的 vbscript 中的当前工作目录

Java 6 注解处理——从注解中获取类