#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/
.