我有一个简单的注解处理器,需要从与被注释类相同的项目中读取配置文件。例如结构:
- myproject
- src
- main
- java
- my.package.SourceFile
- resources
- config.json
在注解处理器中,我尝试读取文件:
FileObject resource = processingEnv.getFiler().getResource(StandardLocation.SOURCE_PATH, "", "config.json");
但是它会抛出FileNotFoundException
。我还尝试了其他路径,比如../resources/config.json
(它会抛出Invalid relative name: ../resources/config.json
),以及将配置文件放在src/main/java
(甚至是src/main/java/my/package
)中,虽然我不喜欢这样做,但仍然会抛出FileNotFoundException
。
如果能让filer.getResource()
告诉我它在哪里查找,已经很有帮助了。为了找出答案,我尝试生成一个文件:
filer.createResource(StandardLocation.SOURCE_OUTPUT, "", "dummy");
这个错误产生在myproject/build/classes/main/dummy
目录下。不幸的是,我不能在SOURCE_PATH
中生成它,所以这并没有帮助我找到问题。
main/java/my/package/config.json
,所以用..
向上一级可能不够。你可以尝试将资源放在与源文件相同的包中,即main/resources/my/package/config.json
。 - Jorn Verneesrc/main/java
,但显然它并不是这样做的。 我尝试将资源放在与源文件相同的位置,但也没有找到。 - JornSOURCE_PATH
作为当前正在处理的源文件的路径。 - Jorn Vernee..
是无效的。 - Jorn Vernee