Thymeleaf Extras检测Spring版本不兼容,Jar运行时抛出配置异常
可能的原因及解决方案:
确保thymeleaf-extras-springsecurity6版本与Spring Boot完全适配
Spring Boot 3.2.3的parent依赖已经内置了对应版本的thymeleaf-extras-springsecurity6管理,不要手动指定版本号,避免隐性版本不兼容。修改pom.xml中的依赖声明,去掉version字段:<dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity6</artifactId> </dependency>手动指定版本可能导致依赖和Spring Boot的Spring 6.x核心版本不匹配,IDEA开发环境的类加载顺序会掩盖这个问题,但Jar包运行时就会触发异常。
重新构建Jar包,清理旧编译产物
执行以下命令彻底清理并重新构建:mvn clean package旧的编译缓存或不完整的Jar包可能导致依赖类缺失,用
jar -tf your-app.jar检查Jar内是否包含org/thymeleaf/extras/springsecurity6/dialect/SpringSecurityDialect.class这类核心类,缺失的话说明构建过程有问题。排除依赖中的Spring相关组件,强制使用Spring Boot管理的版本
即使mvn dependency:tree没显示冲突,也可能存在间接依赖的Spring版本不一致。在依赖中排除Spring Security和Spring Context相关组件,确保完全使用Spring Boot parent提供的版本:<dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity6</artifactId> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> </exclusion> <exclusion> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> </exclusion> </exclusions> </dependency>确认Thymeleaf配置和模板命名空间
虽然Spring Boot会自动注册SpringSecurityDialect,但手动注册可以避免自动配置失效的情况:@Configuration public class ThymeleafConfig { @Bean public SpringSecurityDialect springSecurityDialect() { return new SpringSecurityDialect(); } }同时检查模板文件的命名空间是否正确:
<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
内容的提问来源于stack exchange,提问作者LuxusXc

