필자는 주석이 달린 클래스와 동일한 프로젝트에서 구성 파일을 읽어야하는 간단한 주석 프로세서를 사용합니다. 예 구조 : 주석 프로세서에서주석 처리기로 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'를 취한 것 같았습니다. –