繁体   English   中英

java.lang.NoClassDefFoundError:更新 Gradle Android 插件时失败的解析:Landroidx/work/R

[英]java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/work/R when updating Gradle Android Plugin

我开始更新我的一个旧项目的依赖项,但随后注意到应用程序在一些 dep 更新后没有启动 - 它显示java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/work/R$bool异常。 这可能是因为在启动时我重新安排了一个 Worker 来做一些周期性的 IO。

我将其缩小到com.android.tools.build:gradle:3.5.1 -> com.android.tools.build:gradle:3.6.1build.gradle更改,这确实与文档相对应但这并不帮助很大。

有关出现问题的当前设置的更多上下文:

  • 我将旧的类路径和版本用于implementation "android.arch.work:work-runtime-ktx:1.0.1"的工作库

  • 我尝试在测试项目中重现此设置但没有成功,这可能表明这是某种缓存问题。 我尝试用rm -rf ~/.gradle/caches删除它们,但这没有帮助

  • Android Studio 还在WorkManagerImpl.java文件(来自工作库源)中显示此问题,这表明这确实不是 gradle 缓存问题

编辑 1:我尝试删除androidx:work包使用,并且此异常是由androidx组中的另一个支持库引发的。 这让我注意到有一些其他一些时髦的类处理正在进行。

编辑 2:我找到了解决方案,这适用于任何android.support库 - 一个 gradle 插件realm-android搞砸了构建,所以更新它似乎解决了这个问题。 其他代码生成插件可能会出现类似的问题。

任何有关如何处理此问题的提示将不胜感激

正如 OP 所说,它也可以是任何其他插件或依赖项。 就我而言,错误来自 ObjectBox 插件。

将 ObjectBox 从 2.5 更新到 2.6 为我解决了这个问题。

objectboxVersion = '2.6.0'

但是,我需要将以下行添加到我的 build.gradle 中,以便 ObjectBox 再次工作。

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM