没有静态方法ThreadLocal.withInitial():commons io依赖项



我在Android Studio项目中使用commons-io依赖项。

implementation 'commons-io:commons-io:2.11.0'

但我在Crashlytics看到了这些奇怪的崩溃。这些崩溃出现在Android 7及以下版本上。

Fatal Exception: java.lang.NoSuchMethodError: No static method withInitial(Ljava/util/function/Supplier;)Ljava/lang/ThreadLocal; in class Ljava/lang/ThreadLocal; or its super classes (declaration of 'java.lang.ThreadLocal' appears in /system/framework/core-oj.jar)
at org.apache.commons.io.IOUtils.<clinit>(IOUtils.java:183)
at org.apache.commons.io.IOUtils.closeQuietly(IOUtils.java:534)

我的项目中还包含了Java 8兼容性。

android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}

您可以将库降级到版本"2.8.0",因为在此版本之后,他们使用的是android 7不支持的ThreadLocal。

所以只需在app/build.gradle 中使用即可

implementation 'commons-io:commons-io:2.8.0'

内部公共-io使用ThreadLocal#withInitial API,这不是去库存库的一部分,因此该方法在低于26(Android OREO(的API级别上不可用

要阅读更多关于这方面的内容,你可以在谷歌问题跟踪器上阅读这个帖子的讨论。

解决方案:

我们可以使用commons-io的早期版本,这些版本不使用ThreadLocal API。所以我最终使用了implementation 'commons-io:commons-io:2.5'

相关内容

  • 没有找到相关文章

最新更新