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

Grails初学者升级2.x插件至3.3.2后应用启动失败求助

解决Grails 2插件升级到3.3.2启动失败的Spring Security依赖问题

我帮你梳理下这个问题的根源和解决办法:你遇到的FileNotFoundException找不到org.springframework.security.config.annotation.authentication.configurers.GlobalAuthenticationConfigurerAdapter.class,核心原因是Spring Security版本与Grails 3.3.2的依赖体系不兼容,加上直接复制Grails 2插件代码导致的API适配问题。下面是具体的解决步骤:

1. 锁定Spring Security Core插件的适配版本

Grails 3.3.x对Spring Security插件有明确的版本匹配要求,手动乱调依赖很容易引发冲突:

  • 打开项目的build.gradle,先删除所有手动添加的Spring Security相关依赖(比如直接引入的spring-security-web、spring-security-config等)。
  • 在plugins块中确保使用Grails 3.3.2适配的spring-security-core版本,比如:
    plugins {
        // 其他插件...
        compile 'org.grails.plugins:spring-security-core:3.2.3'
    }
    
    这个版本是官方为Grails 3.3.x适配的,不要随意更换为其他版本。

2. 适配Spring Security API的代码变更

Grails 2到3的Spring Security插件API有较大变化,GlobalAuthenticationConfigurerAdapter在新版Spring Security(Grails 3.3用的是Spring Security 4.x)中已经被调整:

  • 如果你在插件代码中继承了GlobalAuthenticationConfigurerAdapter,需要替换为新版的API实现。比如原来的自定义认证配置类,可改为基于WebSecurityConfigurerAdapter的写法:
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
    import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
    
    class CustomSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            // 你的认证配置逻辑
        }
    }
    
  • 同时检查插件中其他Spring Security相关的代码,比如权限注解、过滤器配置等,确保适配Grails 3的插件API规范。

3. 清理缓存并重新构建项目

旧的依赖缓存和编译文件可能残留冲突的类,需要彻底清理:

  • 执行命令清理Grails和Gradle缓存:
    grails clean
    gradlew clean  # Windows系统直接执行这个,Mac/Linux用./gradlew clean
    
  • 重新运行项目:
    grails run-app
    

4. 解决Java 8的PermSize警告

你看到的PermSize参数警告是因为Java 8已经移除了该参数,需要修改启动配置:

  • 打开项目的gradle.properties,找到包含PermSize的配置行,替换为Metaspace参数:
    org.gradle.jvmargs=-XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=2048m
    
  • 或者在IDE的启动配置中,删除-XX:PermSize=1024m和-XX:MaxPermSize=2048m,替换为上面的Metaspace参数。

额外注意点

  • Grails 3.x插件的目录结构和Grails 2完全不同,不要直接把Grails 2的grails-app下的所有文件复制过来,要对应Grails 3插件的目录(比如代码放到src/main/groovy,资源放到src/main/resources)。
  • 不要手动指定GORM、Hibernate、Spring Boot的版本,让Grails的依赖管理自动处理,避免版本冲突。

内容的提问来源于stack exchange,提问作者user9261804

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:25:23