Я изо всех сил пытался получить статический файл для загрузки с простого Java-сервера aka-http. Я пробовал несколько вариантов, но всегда получаю следующую ошибку:
[ERROR] [09/07/2018 11:52:06.258] [AkkaRestApiApp-akka.actor.default-dispatcher-4] [akka.actor.ActorSystemImpl(AkkaRestApiApp)] Error during processing of request: 'java.lang.NullPointerException (No error message supplied)'. Completing with 500 Internal Server Error response. To change default exception handling behavior, provide a custom ExceptionHandler.
java.lang.NullPointerException
at akka.http.scaladsl.server.directives.FileAndResourceDirectives.$anonfun$getFromResource$1(FileAndResourceDirectives.scala:106)
...
Вот два примера различных маршрутов, которые я пробовал:
return route(path("docs", () ->
getFromResource("resources/index.html")
));
return pathPrefix("docs", () ->
route(
pathEnd(() -> getFromResource("resources/index.html"))
));
Следующая строка правильно выводит путь к файлу:
try {
System.out.println(MyDocService.class.getClassLoader().getResource("resources/index.html").toURI());
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Я предполагаю, что путь, который я передаю методу getFromResource, должен быть таким же. Поскольку подавляющее большинство поисковых запросов akka-http в Google возвращают примеры Scala, я уверен, что просто делаю какую-то глупую ошибку при написании Java-версии. Я нашел более старый пост StackOverflow о проблемах загрузки статических ресурсов, когда путь содержит пробелы, поэтому я убедился, что в пути к моей службе нет пробелов. Заранее спасибо за любые указатели.