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

Android Room编译报错:onCreate方法访问权限弱于父类public

问题根因

这个报错和你写的业务代码、官方教程内容无关,是Room依赖版本冲突导致的注解处理器生成代码异常。
具体触发逻辑:Room的注解处理器room-compiler会在编译期自动生成AppDatabase_Impl实现类,当你引入的room-compiler版本和room-runtime版本不匹配时,注解处理器会按照旧版本的方法签名生成代码——旧版本Room里的onCreate回调方法是protected修饰,新版本Runtime里该方法已经改成public修饰,生成的代码用了更严格的访问权限,就违反了Java方法重写的权限规则,直接抛编译错误。

修复步骤
  • 打开模块级的build.gradle文件,检查所有Room相关依赖的版本号:包括room-runtime、room-compiler,如果引入了room-ktx、room-rxjava*、room-paging等扩展包,所有Room生态的依赖必须使用完全相同的版本号,禁止跨版本混搭。
  • 检查依赖包名,不要混用旧版android.arch.persistence.room包下的Room组件和新版androidx.room包下的组件,两类包名的依赖不能在同一个项目共存。
  • 修改完依赖配置后,依次执行菜单栏的Build -> Clean Project、Build -> Rebuild Project,清空之前旧版本生成的错误缓存文件,注解处理器会重新生成符合当前Runtime版本签名的实现类,报错就会消失。
注意事项

你自己编写的AppDatabase抽象类、Words实体类、WordsDao接口、MainActivity里的数据库调用逻辑都不需要修改,不要为了适配这个报错去手动改自动生成的AppDatabase_Impl.java文件,下次编译自动生成的代码会覆盖你的修改,完全没有效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:18:25