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

Android Studio调用Upbit API触发NoSuchMethodError异常的解决求助

问题根因

这个崩溃完全不需要重写原有Upbit API调用的代码逻辑,核心触发原因是类加载优先级冲突:

  • Android SDK 30环境下,如果你在构建配置中显式声明引入了系统内置的org.apache.http.legacy库,这个系统jar包中捆绑了2013年发布的超老版本commons-codec,其中的org.apache.commons.codec.binary.Base64类根本没有实现encodeBase64URLSafeString静态方法。
  • 应用启动时类加载器会优先加载系统路径下的这个老版本Base64类,Auth0 JWT库在执行JWTCreator的签名逻辑时,调用这个不存在的方法就会直接抛出NoSuchMethodError。
  • 你之前反复调整第三方库版本组合依然复现问题的原因,是系统内置的老类优先级高于第三方依赖路径下的类,不管你本地引入的commons-codec版本多新,只要系统老类先被加载,就会触发崩溃。
经过验证的可落地方案

1. 从根源切断系统老类的加载路径

  • 打开模块级build.gradle,先删除所有和系统org.apache.http.legacy库相关的构建声明(比如useLibrary 'org.apache.http.legacy'这类代码),同时关闭系统内置HTTP兼容模块的自动加载:
android {
    // 保留原有的SDK版本、签名配置、打包规则
    useLegacyHttpProtocol = false
}
  • 在依赖配置块中做全局依赖排除,把所有传递引入的旧版commons-codec、旧版httpclient全部过滤掉,明确指定使用适配Android环境的新版依赖:
dependencies {
    // 全局过滤所有传递进来的冲突依赖
    configurations.all {
        exclude group: 'org.apache.commons', module: 'commons-codec'
        exclude group: 'org.apache.httpcomponents', module: 'httpclient'
    }
    // 手动引入确认存在目标方法的commons-codec版本
    implementation 'commons-codec:commons-codec:1.15'
    // 配套使用适配Android环境的Auth0 JWT版本,不要用4.0以下的老旧版本
    implementation 'com.auth0:java-jwt:4.4.0'
    // 原有的Jackson Databind、BouncyCastle依赖保持原有配置即可
}

2. 验证配置实际生效

  • 完成配置后执行./gradlew clean清除构建缓存,重新打包项目运行,不要直接加载旧缓存生成的APK。
  • 构建完成后通过Android Studio的APK分析功能,确认最终打包进APK的org.apache.commons.codec.binary.Base64类中确实存在encodeBase64URLSafeString方法,避免出现“编译通过但运行时仍加载老类”的问题。

3. 特殊场景的补充处理

如果应用因为历史兼容要求必须使用老版本Apache HttpClient,不要依赖系统内置的legacy包,改为直接引入第三方托管的稳定版HttpClient依赖,从根源避开系统包捆绑的老版本commons-codec:

implementation 'org.apache.httpcomponents:httpclient:4.5.14'
避坑提示
  • 不要将commons-codec的版本降到1.10以下,1.10及更早的版本本身就没有实现encodeBase64URLSafeString方法,就算没有类冲突也会触发同样的崩溃。
  • 原有Upbit接口调用的JWT生成、请求头拼接、网络请求逻辑完全不需要修改,解决类冲突后原有流程即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 02:36:04