我正在使用HTML和Thymeleaf作为我的前端开发Java Spring Boot Web应用程序。我遇到的问题是,当我尝试运行项目时,我的ThymeleafConfig类会随机出错。我将在下面详细解释,但首先是我的代码。
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
文件 - &gt; Maven - &gt;再进口。这将重新导入我的所有依赖项,一切都将恢复正常。
我还想强调,每次运行应用程序时都不会发生这种情况。有时它会连续发生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);
}
}
要运行应用程序,我右键单击此文件,然后单击运行“应用程序”按钮。
答案 0 :(得分:0)
Spring boot已经包含了thymeleaf(一个不同的版本),你可能在类路径上有多个版本。 Spring Boot在其文档中非常清楚百里香的情况:
默认情况下,spring-boot-starter-thymeleaf使用Thymeleaf 2.1。如果你 正在使用spring-boot-starter-parent,你可以使用Thymeleaf 3 压倒百里香。逆转和百里香 - 布局 - 方言 属性,例如:
<properties> <thymeleaf.version>3.0.0.RELEASE</thymeleaf.version> <thymeleaf-layout-dialect.version>2.0.3</thymeleaf-layout-dialect.version> </properties>
...
如果您使用任何其他自动配置的Thymeleaf Extras (Spring Security,Data Attribute或Java 8 Time)你也应该 将每个版本覆盖为兼容的版本 Thymeleaf 3.0。
如果你看spring-boot-dependency's pom on github,百里香的属性是:
<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>
我相信您至少需要定义以下属性(可能需要更多一些以避免版本不匹配?):