Spring-cloud-netflix: Dashboard templates not found on classpath

Created on 23 Nov 2018  路  8Comments  路  Source: spring-cloud/spring-cloud-netflix

After enabling the Eureka server with @EnableEurekaServer in an existing application the dashboard can not be opened:

org.thymeleaf.exceptions.TemplateInputException: Error resolving template [eureka/status], template might not exist or might not be accessible by any of the configured Template Resolvers
    at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:362) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:189) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1370) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1116) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:998) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:890) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.12.jar:9.0.12]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.12.jar:9.0.12]

Since Eureka uses Freemarker as its template engine, the error message is at least confusing. After debugging this case I found that the Freemarker templates can not be loaded by the ClassTemplateLoader. I am not sure what the root cause is but it seems strange that resourceLoaderClass is set and all templates are being resolved relative to this class.

As a workaround I can set the template loader manually:

spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.prefer-file-system-access=false

I am using spring-cloud-netflix-eureka-server (2.0.2.RELEASE) and Spring Boot 2.1.0.

documentation

Most helpful comment

Pull requests welcome

All 8 comments

Looks like your existing application uses thymeleaf?

Yes, that is correct.

We've never encounter that. So you're workaround is probably needed.

This issue affects other users, too.

Perhaps it is a good idea to document this workaround.

Pull requests welcome

This issue still occurs in my project, is there a valid solution to this by now?

Did you read the documentation in the above commit?

Please forgive my ignorance, the workaround did actually resolve my issue. Thank you @spencergibb and @stovocor

Was this page helpful?
0 / 5 - 0 ratings