Android buildSrc 模块问题:Gradle 的类 DefaultProject 被错误地尝试转换成 Apache Ant 的 Project 类

  • 在 Android 开发中,创建了 buildSrc 模块,并创建了自定义插件,构建时,出现了如下错误信息

    class org.gradle.api.internal.project.DefaultProject_Decorated cannot be cast to class org.apache.tools.ant.Project (org.gradle.api.internal.project.DefaultProject_Decorated is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @26aa12dd; org.apache.tools.ant.Project is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @131276c2)
    class org.gradle.api.internal.project.DefaultProject_Decorated cannot be cast to class org.apache.tools.ant.Project (org.gradle.api.internal.project.DefaultProject_Decorated is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @26aa12dd; org.apache.tools.ant.Project is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @131276c2)

    Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

    Re-download dependencies and sync project (requires network)
    The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.

    Stop Gradle build processes (requires restart)
    Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.

    In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.

问题原因
  1. 这是一个类加载器冲突问题,Gradle 的类 DefaultProject 被错误地尝试转换成 Apache Ant 的 Project 类

  2. 这通常是由于构建脚本中使用了错误的导入语句导致的

    这两个类虽然都叫 Project,但来自完全不同的包

    1. Gradle Project: org.gradle.api.Project

    2. Ant Project: org.apache.tools.ant.Project

处理策略
  • 将导入的 Ant 的 Project 修改为 Gradle 的 Project
groovy 复制代码
// 原来是这样

import org.apache.tools.ant.Project
groovy 复制代码
// 修改为这样

import org.gradle.api.Project
相关推荐
北风toto2 小时前
IDEA设置自定义注释(已亲测),新创建类的注释,在方法上自定义注释,设置注释签名
java·intellij-idea·策略模式
文慧的科技江湖2 小时前
光储充一体化系统落地 PRD 全功能清单 - 慧知开源充电桩平台
java·mysql·开源·springboot·慧知开源充电桩平台·充电重复订单解决方案源码
好家伙VCC2 小时前
**TEE在嵌入式安全中的应用实践:基于ARM TrustZone的加密存储方案设计与实现*
java·arm开发·python·struts·安全
吾好梦中写代码2 小时前
Redis——缓存
java·redis·缓存
二月夜2 小时前
Maven 常用命令完整版速查表
java·maven
砍材农夫2 小时前
spring-ai 第十tool调用
java·人工智能·spring
aaa最北边2 小时前
计算机网络-断开连接的四次挥手底层细节
java·网络·计算机网络
java叶新东老师2 小时前
解决jetbrains idea 自带终端无法加载windows系统环境变量
java·windows·intellij-idea
大G的笔记本2 小时前
Java WebSocket客户端--java.net.http.HttpClient
java·websocket·.net