Spring Boot授权服务集成JTE模板引擎在IntelliJ运行异常求助
问题详情
我正在使用Spring Authorization Server,配置了自定义品牌与登录页面,同时集成了JTE Java模板引擎,Gradle配置如下:
plugins { java id("org.springframework.boot") version "3.3.5" id("io.spring.dependency-management") version "1.1.6" id("gg.jte.gradle") version "3.1.12" } group = "school.staff" version = "0.0.1-SNAPSHOT" java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } repositories { mavenCentral() } dependencies { implementation("org.springframework.boot:spring-boot-starter-oauth2-authorization-server") implementation("org.springframework.boot:spring-boot-starter-web") implementation("gg.jte:jte:3.1.12") implementation("gg.jte:jte-spring-boot-starter-3:3.1.12") testImplementation("org.springframework.boot:spring-boot-starter-test") testRuntimeOnly("org.junit.platform:junit-platform-launcher") } jte { generate() binaryStaticContent = true } tasks.withType<Test> { useJUnitPlatform() }
在IntelliJ IDE中按配置运行时,日志抛出如下异常:
org.springframework.security.access.AccessDeniedException: Access Denied at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:98) ~[spring-security-web-6.3.4.jar:6.3.4] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.3.4.jar:6.3.4] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) ~[spring-security-web-6.3.4.jar:6.3.4] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) ~[spring-security-web-6.3.4.jar:6.3.4] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.3.4.jar:6.3.4] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) ~[spring-security-web-6.3.4.jar:6.3.4] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.3.4.jar:6.3.4] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179) ~[spring-security-web-6.3.4.jar:6.3.4] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.3.4.jar:6.3.4] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-6.3.4.jar:6.3.4] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.3.4.jar:6.3.4]
但通过./gradlew bootrun命令或VScode、Fleet等其他IDE运行时,项目可正常工作,怀疑是IntelliJ相关问题,请求排查原因。
排查解决方案
1. 修正IntelliJ运行器配置
IntelliJ默认的内置运行器可能跳过JTE插件的代码生成步骤,导致模板资源无法加载触发权限拦截:
- 打开
Run/Debug Configurations,找到你的Spring Boot运行配置 - 将
Build and run using选项改为Gradle而非IntelliJ IDEA - 执行
File → Sync Project with Gradle Files同步配置,再重启项目
2. 检查JTE生成目录的标记状态
JTE生成的模板类目录可能未被IntelliJ识别为源码根目录:
- 找到项目中的
build/jte-classes目录 - 右键选择
Mark Directory as → Sources Root - 清理IntelliJ缓存:
File → Invalidate Caches... → 勾选Clear file system cache and local history → 点击Invalidate and Restart
3. 确认运行环境的一致性
- 检查运行配置的
Working directory是否与项目根目录一致,避免路径差异导致资源访问失败 - 查看
Active profiles选项,确保和./gradlew bootrun使用的Profile完全一致,不同Profile可能加载不同的Security配置
4. 匹配Java版本配置
Gradle配置指定了Java 21 Toolchain,需确保IntelliJ运行时使用相同版本:
- 在
Run/Debug Configurations中,查看JRE选项,选择Java 21版本 - 打开
Project Structure → SDKs,确认已配置Java 21并关联到项目
内容的提问来源于stack exchange,提问作者San Jaisy
相关产品推荐
相关产品推荐

