Spring Boot donne “TemplateInputException: Erreur de résoudre le modèle lors de l'exécution de jar

J'ai une application qui fonctionne parfaitement lorsqu'il est lancé au sein de l'Ide, ou par l'intermédiaire de gradle bootRun.

toutefois, si je ne gradle bootRepackage et puis essayer de courir la résultante de pot, je me retrouve avec:

2014-12-02 21:46:14.086 ERROR 9839 --- [nio-2014-exec-2] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-2014-exec-2] Exception processing template "/login": Error resolving template "/login", template might not exist or might not be accessible by any of the configured Template Resolvers
2014-12-02 21:46:14.087 ERROR 9839 --- [nio-2014-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/login", template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause

org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/login", template might not exist or might not be accessible by any of the configured Template Resolvers
    at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:245)
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104)
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060)
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)
    at org.thymeleaf.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:335)

Je peux voir que le pot a /templates/** contenue. le contenu semble OK pour moi.

Un possible(?) le facteur peut être que j'utilise une page html se référant à un modèle, donc:

  layout:decorator="layouts/main"

Je peux confirmer que le fichier EST dans le pot.

/connexion est définie ainsi:

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/login").setViewName("/login");
    registry.addViewController("/").setViewName("/login");
}

et j'ai de la sécurité printemps configuré comme:

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
public void configure(WebSecurity security) {
    security.ignoring().antMatchers("/assets/**");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .csrf().disable();
    http
            .authorizeRequests()
            .antMatchers("/").permitAll()
            .anyRequest().authenticated();
    http
            .formLogin()
            .loginPage("/login")
            .defaultSuccessUrl("/home")
            .failureUrl("/login?error")
            .permitAll()
            .and()
            .logout()
            .invalidateHttpSession(true)
            .logoutSuccessUrl("/login?logout")
            .permitAll();
}
}

Je pense que c'est tout ce qui pourrait être pertinente à cette question...

J'ai vu https://github.com/spring-projects/spring-boot/issues/112 et Bon emplacement de Thymeleaf vues pour le Printemps (parmi d'autres). Ces ressources nonobstant, je n'ai pas réussi à obtenir le modèle de résolution de travail.

Des suggestions reçu avec gratitude.

D'être venu si loin avec Spring Boot pas encore tombé à la dernière haie (à proximité de finale de déploiement) est vexatoire.

Rien d'évident est de sauter hors de moi et le Printemps de Démarrage dispose d'un échantillon l'utilise Thymeleaf avec une mise en page (github.com/spring-projects/spring-boot/tree/master/...) donc je ne pense pas que ce soit le problème. Peut-être de regarder les exemples pourraient aider à détecter une différence dans votre application d'installation?

OriginalL'auteur Bob Brown | 2014-12-02