Как прочитать файл из папки в Java Micronaut

#java #json #resources #classpath #micronaut

#Ява #json #Ресурсы #путь к классу #микронавт

Вопрос:

В проекте Micronaut у меня есть структура папок, подобная следующей:

 myproject  |____mocks  | |_____file.json  |  |____src  |_____main  |_____java  |_____s.p.d.b.controllers  |________MyController.java  

Я хочу прочитать содержимое файла.json и верните его в качестве ответа обработчика запроса GET на MyController.

 @Controller("${endpoints.all.path}/v1/file") public class MyController {  private static final Logger LOG = LoggerFactory.getLogger(MyController.class);   @Get  public HttpResponselt;Listlt;FileModelgt;gt; getAll() {  ObjectMapper mapper = new ObjectMapper();  String file = "mocks/file.json";  String jsonString;  Listlt;FileModelgt; fileList;  try {  jsonString = new String(Files.readAllBytes(Paths.get(file)));  fileList = mapper.readValue(jsonString, new TypeReferencelt;Listlt;FileModelgt;gt;(){});  } catch (IOException e) {  LOG.error(e.getMessage());  return HttpResponse.serverError();  }  return HttpResponse.ok(fileList);  } }  

Это работает локально при запуске из IntelliJ. Это не работает, как только я развертываю приложение в своем кластере K8S. В развернутом приложении я получаю сообщение об ошибке: [default-nioEventLoopGroup-1-2] ERROR c.s.p.d.b.c.MyController

По какой-то причине файлы не могут быть проанализированы или недоступны для развернутого приложения. Есть ли что-то, что мне нужно сделать, чтобы загрузить их или добавить в путь к классам?

Ответ №1:

Расположение файлов было неадекватным. Я переместил их в папку «Ресурсы», а затем смог легко получить к ним доступ.

 myproject    |  |____src  |_____main  |_____java  | |_____s.p.d.b.controllers  | |________MyController.java  |  |  |_____resources  |  |_______mocks  

Комментарии:

1. Это действительно src/resources/mocks/ так или нет src/main/resources/mocks/ ?

2. к вашему сведению… Ответ был обновлен, чтобы уточнить, что правильный путь src/main/resources/mocks/ .