Как ответить с помощью HTML-страницы SparkJava

Я нашел это и этот ответ, но ни один из них не сработал. Первый работает только для index.html (вам не нужно указывать путь и все такое). Код из второго решения дает мне NullPointerException, хотя файл существует, а Spark возвращает index.html.

Вспомогательный класс

class Helper(){
   String renderContent(String htmlFile) {
       try {
           return new String(Files.readAllBytes(Paths.get(getClass().getResource(htmlFile).toURI())), StandardCharsets.UTF_8);
       } catch (IOException | URISyntaxException e) {
           e.printStackTrace();
           mailSendingList.add(e.toString());
       }
       return null;
   }
}

Маршруты

get("/404", (req, res) -> helper.renderContent("404.html"));

Исключение

java.lang.NullPointerException
at Helper.renderContent(Helper.java:177)
at Main.lambda$main$1(Main.java:33)
at spark.SparkBase$1.handle(SparkBase.java:311)
at spark.webserver.MatcherFilter.doFilter(MatcherFilter.java:159)
at spark.webserver.JettyHandler.doHandle(JettyHandler.java:60)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:179)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:451)
at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:252)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:266)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:240)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:596)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:527)
at java.lang.Thread.run(Thread.java:745)

person Community    schedule 25.10.2016    source источник


Ответы (2)


проверьте возврат getClass().getResource(htmlFile), вероятно, он равен нулю, потому что ресурс не найден.

Если у вас есть файл «404.html» и корень пути к классам, измените код на (обратите внимание на вставку «/»)

get("/404", (req, res) -> helper.renderContent("/404.html"));
person P.J.Meisch    schedule 25.10.2016
comment
и каков результат вызова getResource(htmlFile)? Этот ресурс найден? - person P.J.Meisch; 26.10.2016
comment
он выдает мне NullPointer, но я решил проблему. Смотрите комментарий под вопросом - person ; 26.10.2016

Мой путь к файлу был неправильным. Замена ("404.html") на ("public/404.html") помогла.

person Community    schedule 26.10.2016