我有一個簡單的註釋處理器,需要從註釋類的相同項目讀取配置文件。示例結構:如何使用註釋處理器從src/main/resources讀取文件?
- 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
中生成,因此無法找到答案。
我不知道你正在使用的API,但是如果它以源路徑爲基礎,那會解析爲'main/java/my/package/config.json',所以用'..'上去一次就不夠了。您可以嘗試將資源放在與源文件相同的包中。即'main/resources/my/package/config.json'。 –
我不知道爲什麼源路徑將類作爲基地的位置。在閱讀配置文件時,沒有任何地方提及類位置。它沒有。我期望它採用'src/main/java',但顯然這不是它所做的。 我曾嘗試將資源放在與源文件相同的位置,但它在那裏也找不到。 – Jorn
好吧,我想也許它把'SOURCE_PATH'作爲當前正在處理的源文件的路徑。 –