Загрузка статических html-файлов с использованием Akka-http Java - PullRequest
0 голосов
/ 07 сентября 2018

Я изо всех сил пытался получить статический файл для загрузки с простого 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 о проблемах загрузки статических ресурсов, когда путь содержит пробелы, поэтому я убедился, что в пути к моей службе нет пробелов. Заранее спасибо за любые указатели.

1 Ответ

0 голосов
/ 07 сентября 2018

Мне удалось заставить это работать, используя getFromFile вместо getFromResource. До сих пор не ясно, почему getFromResource не работает, но я могу обойти эту проблему.

...