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

升级至Gradle 7.0.2和AGP 7.0.2后出现ClassNotFoundException错误是什么原因?

异常截图

错误产生原因

  • AGP 7.0.2 及以上版本默认强制要求使用JDK 11作为编译运行环境,而JDK 9之后对内部私有API做了强隔离限制,jdk.internal.reflect包下的所有类都属于JDK内部实现,默认不会对应用层暴露,类加载器无法直接加载该路径下的类。
  • 项目中存在自定义序列化逻辑,或是依赖的第三方序列化库(比如旧版本fastjson、gson、kryo等)是基于JDK 8开发的,代码中直接引用了jdk.internal.reflect下的反射构造器访问类,运行到对应序列化逻辑时就会触发类找不到的异常。
  • 少数场景下是开启了R8代码混淆/资源缩减时,添加了错误的移除规则,把运行时动态生成的GeneratedSerializationConstructorAccessor系列类判定为无用类被提前裁剪,运行时找不到对应类也会抛出该异常。

可选修复方案

  • 优先排查项目中用到的序列化相关依赖,升级到适配JDK 11的最新版本,从根源避免依赖JDK内部API的问题。
  • 若必须使用不兼容的旧库,可以在gradle.properties中添加JVM参数开放对应内部包的访问权限:
org.gradle.jvmargs=--add-opens java.base/jdk.internal.reflect=ALL-UNNAMED
  • 检查R8/proguard混淆规则,添加如下规则避免动态生成的类被移除:
-keep class jdk.internal.reflect.** { *; }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:12:03