2015-01-22 3 views
0

У меня есть приложение вверх и работает с использованием Spring Boot (Maven). В настоящее время настроен как WAR с Stand Alone Tomcat. Все работает нормально.Spring MVC 4 - Tiles3 - Tiles-extras сбой при сбоях applicaiton

Если я добавлю tiles-extras v3.0.5, приложение выйдет из строя со следующей ошибкой. Я не использую FreeMarker в приложении. JSP & Плитка только.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Cannot find template location(s): [classpath:/templates/] (please add some templates, check your FreeMarker configuration, or set spring.freemarker.checkTemplateLocation=false) 

EDIT Добавление viewResolver упаковывают это необходимо.

@Bean 
public UrlBasedViewResolver viewResolver() { 
    UrlBasedViewResolver viewResolver = new UrlBasedViewResolver(); 
    viewResolver.setViewClass(TilesView.class); 
    viewResolver.setOrder(0); 
    return viewResolver; 
} 

Изменение Реализовано

<dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-extras</artifactId> 
     <version>${tiles.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.apache.tiles</groupId> 
       <artifactId>tiles-freemarker</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.apache.tiles</groupId> 
       <artifactId>tiles-velocity</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.apache.tiles</groupId> 
       <artifactId>tiles-request-mustache</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

Новая ошибка

Caused by: java.lang.NoClassDefFoundError: javax/servlet/jsp/JspFactory 
+0

Исключить Freemarker как зависимость от 'tiles-extra'. Свободная маркерная зависимость запускает регистрацию некоторых компонентов Freemarker в Spring Boot. –

+0

Другие советы вместо использования 'UrlBasedViewResolver' используют' TilesViewResolver', сохраняет несколько строк кода. –

+0

Ваш первый комментарий был мертв. Это решило проблему с Spring Boot. И вы правы, он сохраняет строку :-) Мне все еще нужен setOrder. – code

ответ

2
<dependency> 
    <groupId>org.apache.tiles</groupId> 
    <artifactId>tiles-extras</artifactId> 
    <version>3.0.5</version> 
</dependency> 

При добавлении tiles-extras как зависимость это автоматически добавляет много других tiles-*, см. pom. Вы можете либо исключить freemarker, либо tiles-freemarker.

<dependency> 
    <groupId>org.apache.tiles</groupId> 
    <artifactId>tiles-extras</artifactId> 
    <version>3.0.5</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-freemarker</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

Если вы не используете шаблон двигателей Вы также можете исключить velocity зависимость.

+0

Я попробовал, просто за исключением фристайлера, все еще получаю эту новую ошибку. – code

+0

Вам нужно добавить 'asp-api' в качестве зависимости (может быть, это обычно транзитивная зависимость от одной из банок, которые вы исключаете). Получаете ли вы его при развертывании или запуске в качестве автономной банки/войны? –

+0

Ошибка возникает из-за бега с войной с Maven, установленной Tomcat. Самое смешное, что я понял, как выполнить то, что мне нужно, без необходимости использования дополнительных элементов. – code

Смежные вопросы