Gradle sync failed: Cause: com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List

本文介绍如何解决Android Studio 3.0.1升级后与Butterknife 8.8.1版本冲突的问题。通过调整依赖配置、删除冗余插件等步骤,确保项目的正常运行。

AndroidStudio升级到3.0.1后我新建的项目发现一直报这个异常。


  一开始还以为是因为没有翻墙的原因,导致哪个类库下载失败。后面一查发现是跟Butterknife 最新的8.8.1版本冲突了。原有的依赖方法,目前不适用,得删一些地方,


1.在project的gradle中删除Butterknife的依赖


2.在module的依赖里面将Butterknife的改为 annotationProcessor,


3.删掉多余的plugin



最后重新再gradle一遍,就可以了




关于AndroidStudio 升级到3.0以后Butterknife 8.8.1的使用,

可以参考 Butter Knife 8.8.1的安装和使用。写的可以说是非常详细了。

### 引发 `NoSuchMethodError` 的常见原因与解决方案 在 Spring 框架中,`org.springframework.web.util.NestedServletException` 通常用于封装底层异常,例如 `NoSuchMethodError`,该错误表明在运行时调用了某个类中不存在的方法。这类问题通常由依赖版本不兼容、类路径冲突或字节码增强工具的误用引起。 #### 1. 依赖版本冲突导致方法缺失 Spring 框架的不同模块或第三方库可能依赖不同版本的相同类库,导致运行时加载的类缺少预期方法。例如: ```java org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.springframework.data.mongodb.core.MongoTemplate.save(Ljava/lang/Object;)V ``` 上述异常表明 `MongoTemplate.save(Object)` 方法在运行时找不到,可能是因为使用的 `spring-data-mongodb` 版本较旧,不包含该方法[^1]。 **解决方案**包括: - 确保所有 Spring 模块使用一致的版本。 - 更新 `spring-data-mongodb` 至支持 `save(Object)` 方法的版本。 - 检查 Maven 或 Gradle 配置,排除冲突依赖。 #### 2. 字节码增强工具引发的类方法缺失 某些 AOP 或 ORM 框架(如 Hibernate、Javassist)会动态修改类结构,若使用不当,可能导致运行时调用不存在的方法。例如: ```java org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: javassist.util.proxy.ProxyFactory.setUseCache(Z)V ``` 该异常表明 `ProxyFactory.setUseCache(boolean)` 方法在运行时不存在,可能由于 Javassist 版本过低或与其他代理库冲突[^3]。 **解决方案**包括: - 升级 Javassist 至支持 `setUseCache(boolean)` 方法的版本(如 3.22.0-GA 及以上)。 - 检查 Spring Boot 自动配置,避免多个代理库同时生效。 - 若使用 Hibernate,确保其版本与 Javassist 兼容。 #### 3. JVM 类加载机制导致的方法缺失 JVM 在类加载时采用双亲委派机制,若多个类加载器加载了相同类的不同版本,可能导致方法签名不一致。例如: ```java org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceeded ``` 虽然该异常本身是内存溢出错误,但可能由类加载器频繁加载/卸载类引起,间接导致 `NoSuchMethodError` 出现[^2]。 **解决方案**包括: - 增加 JVM 堆内存,避免频繁 Full GC。 - 检查 Web 应用部署配置,避免重复部署相同类库。 - 使用 `ClassLoader` 分析工具(如 VisualVM)排查类加载冲突。 --- ### 异常调试与排查建议 - **查看完整的异常堆栈**,定位具体出错的类和方法。 - **使用 `mvn dependency:tree` 或 `gradle dependencies`** 检查依赖树,识别版本冲突。 - **启用 Spring Boot 的 debug 日志**,例如配置 `logging.level.org.springframework=DEBUG`。 - **使用 `jdeps` 或 `bytecode analysis tools`** 分析类路径中的方法兼容性。 --- ### 示例:Maven 依赖冲突修复 ```xml <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>3.4.0</version> </dependency> ``` 上述配置可确保 `MongoTemplate.save(Object)` 方法可用。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值