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

Android中ButterKnife的@OnClick失效且触发BootstrapMethodError异常

解决ButterKnife @OnClick失效+BootstrapMethodError异常的问题

嘿,我来帮你搞定这个问题!从你贴的报错日志和代码来看,这个BootstrapMethodError是关键——它出现在ButterKnife内部的DebouncingOnClickListener初始化环节,说白了就是ButterKnife用了Java 8的特性,但你的项目没开启Java 8编译支持,或者版本不兼容导致的。下面给你分情况解决:

最常见原因:没开Java 8编译支持

ButterKnife从9.x版本开始就依赖Java 8特性了,所以必须在项目里开启这个配置:

  1. 打开你Module级别的build.gradle(一般是app/build.gradle)
  2. 在android代码块里加上这些配置:
android {
    // 保留你原来的配置,新增下面这段
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    // 如果你的项目用了Kotlin,还要加这个
    kotlinOptions {
        jvmTarget = '1.8'
    }
}
  1. 点Android Studio右上角的「Sync Now」同步Gradle
  2. 先清理项目(Build → Clean Project),再重新构建(Build → Rebuild Project)

如果开了Java 8还是不行:检查版本兼容性

要是上面的步骤做完还报错,那可能是ButterKnife和Android Gradle插件(AGP)版本不匹配:

  1. 先把ButterKnife更到最新稳定版,在app/build.gradle的依赖里改:
dependencies {
    // 换成当前最新的稳定版,比如10.2.3(可根据官方更新调整)
    implementation 'com.jakewharton:butterknife:10.2.3'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
}
  1. 检查AGP版本,Project级别的build.gradle里,AGP至少要3.2.0以上(ButterKnife 10+要求的):
buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:7.4.2' // 用稳定版,别太老旧
    }
}
  1. 同样同步Gradle,清理重建项目

最后再检查几个小细节

  • 你代码里ButterKnife.bind(this)放在setContentView()之后,这步是对的,不用改
  • 确认布局里的test_btnID没写错,别和代码里的名字对不上
  • 如果你的项目是AndroidX,那没问题,ButterKnife 10+完全支持AndroidX

按照上面的步骤来,@OnClick应该就能正常触发点击事件,那个BootstrapMethodError也会消失啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:02:03