2016-10-13 3 views
3

Я работаю над веб-приложением Spring Spring Java, используя HTML и Thymeleaf в качестве моего интерфейса. Проблема, с которой я сталкиваюсь, заключается в том, что мой класс ThymeleafConfig будет случайным образом иметь ошибку при попытке запустить мой проект. Я объясню более подробно ниже, но сначала здесь мой код.Maven зависимость случайно не распознается

pom.xml зависимость:

<dependency> 
    <groupId>org.thymeleaf.extras</groupId> 
    <artifactId>thymeleaf-extras-springsecurity4</artifactId> 
</dependency> 

ThymeleafConfig класс:

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect; 

@Configuration 
public class ThymeleafConfig { 

    @Bean 
    public SpringSecurityDialect springSecurityDialect() { 
     return new SpringSecurityDialect(); 
    } 
} 

Так объяснить далее, мой код будет хорошо (в соответствии с моей IDE), не содержащие ошибок на любом из моих линии, готовые к запуску. Я запустил свой класс приложения для запуска моего проекта, и я получу ошибки компиляции.

IntelliJ автоматически откроет файл с ошибкой в ​​нем, который является моим классом ThymeleafConfig. Когда ошибка присутствует, строка импорта import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect; будет выделена серым цветом и не будет распознана. вызывая ошибки в классе.

Чтобы исправить это, щелкните правой кнопкой мыши мой файл pom.xml -> Maven -> Reimport. Это приведет к возврату всех моих зависимостей, и все вернется к норме.

Я также хочу подчеркнуть, что это не происходит при каждом запуске приложения. Иногда это случается 3 раза подряд, в других случаях я буду запускать его 5 раз, прежде чем ошибка снова появится.

Я пробовал mvn clean, который не исправил проблему. Я также переместил зависимость в другую строку в файле pom.xml.

редактировать: Вот мой Application.java класс

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application.class, args); 
    } 
} 

Для запуска приложения я правой кнопкой мыши этот файл и нажмите на кнопку запуска «Application».

+0

Не могли бы вы также рассказать нам, как именно вы построить/запустить приложение? Казалось бы, вы как-то удаляете библиотеки/разбиваете путь к классам. –

+0

Конечно - см. Edit –

+1

У меня есть 15+ других зависимостей в моем pom.xml - все ведут себя так, как должны. Именно эта зависимость Thymeleaf-security-4 имеет проблему –

ответ

0

Весенняя обувь уже включает тимелеаф (другая версия), и вы, вероятно, имеете несколько версий на пути к классам. Spring Загрузочный довольно четкое представление о thymeleaf на документации:

Spring boot 1.4.2's documentation на использовании thymeleaf 3.0.0

По умолчанию весна-загрузки-стартер-thymeleaf использует Thymeleaf 2,1. Если используется пружинный загрузочный стартер-родитель, вы можете использовать Thymeleaf 3 по перекрывая thymeleaf.version и thymeleaf-макет dialect.version свойства, например:

...

Если вы используете любой другой авто сконфигурированных Thymeleaf Дополнительно (Attribute Spring Security, данных или Java 8 Время) вы также должны переопределить каждый из их версий на тот, который совместим с Thymeleaf 3.0.

Если посмотреть на spring-boot-dependency's pom on github, свойства thymeleaf являются:

<thymeleaf.version>2.1.5.RELEASE</thymeleaf.version>   
<thymeleaf-extras-springsecurity4.version>2.1.2.RELEASE</thymeleaf-extras-springsecurity4.version> 

<thymeleaf-extras-conditionalcomments.version>2.1.2.RELEASE</thymeleaf-extras-conditionalcomments.version> 

<thymeleaf-layout-dialect.version>1.4.0</thymeleaf-layout-dialect.version> 

<thymeleaf-extras-data-attribute.version>1.3</thymeleaf-extras-data-attribute.version> 

<thymeleaf-extras-java8time.version>2.1.0.RELEASE</thymeleaf-extras-java8time.version> 

Recap

Я считаю, что вы должны по крайней мере определить следующие свойства (возможно, несколько более во избежание несоответствия версий?):

  • thymeleaf.version
  • thymeleaf-статистов-springsecurity4.version
+0

Где именно я могу определить этот «» фрагмент, который вы предоставили? В самой pom или в отдельном файле конфигурации? –

+0

В вашем пом, как вы обычно определяете свойства. – alexbt

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