我一直在努力从一个简单的aka-http Java服务器中加载静态文件。我尝试了多种选择,但始终会遇到以下错误:
[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帖子,该帖子有关在路径包含空格时加载静态资源的问题,因此我确保服务路径中没有空格。预先感谢您提供任何指导。
答案 0 :(得分:0)
我能够使用getFromFile而不是getFromResource使它正常工作。尚不清楚为什么getFromResource无法正常工作,但我可以解决该问题。