You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot授权服务集成JTE模板引擎在IntelliJ运行异常求助

IntelliJ运行Spring Authorization Server+JTE项目时出现Access Denied异常,其他环境正常

问题详情

我正在使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:16:05