首页 > 解决方案 > 未能解决:Landroidx/work/impl/utils/futures/AbstractFuture

问题描述


我尝试在我的一个项目中实现 WorkManager API。该应用程序编译成功,但是当我尝试使用 WorkManager 执行某些工作时,它会引发以下运行时错误:
Runtime Error
Failed resolution of: Landroidx/work/impl/utils/futures/AbstractFuture;

我对这个错误的了解是,它发生在编译时可用的某些类在运行时不可用时。但我的情况似乎并非如此,因为当我反编译我的 APK 时,所有必要的类(包括androidx.work.impl.utils.futures.AbstractFuture)都在那里!我尝试了工作运行时库的 2.3.4、2.4.0 和 2.5.0_Alpha01 版本,但它们似乎都不起作用。如果有人可以帮助我解决这个问题,那将非常有帮助。=)


注意:仅供参考,我正在从事的项目非常古老,不幸的是,它仍然使用 Apache Ant。此外,我们很快就迁移到 Gradle 并不容易,因为它会影响整个架构并需要大量时间。因此,任何建议更改 build.gradle 的解决方案都不会很有帮助。:)


编辑:如果有人需要查看 ADB 日志:

...
09-05 20:47:01.536 25688 25688 W System.err: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/work/impl/utils/futures/AbstractFuture;
09-05 20:47:01.536 25688 25688 W System.err:    at androidx.work.WorkManager.initialize(WorkManager.java:210)
09-05 20:47:01.536 25688 25688 W System.err:    at androidx.work.impl.WorkManagerInitializer.onCreate(WorkManagerInitializer.java:40)
09-05 20:47:01.537 25688 25688 W System.err:    at android.content.ContentProvider.attachInfo(ContentProvider.java:2102)
09-05 20:47:01.537 25688 25688 W System.err:    at android.content.ContentProvider.attachInfo(ContentProvider.java:2076)
09-05 20:47:01.537 25688 25688 W System.err:    at android.app.ActivityThread.installProvider(ActivityThread.java:7430)
09-05 20:47:01.537 25688 25688 W System.err:    at android.app.ActivityThread.installContentProviders(ActivityThread.java:6934)
09-05 20:47:01.537 25688 25688 W System.err:    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6851)
09-05 20:47:01.537 25688 25688 W System.err:    at android.app.ActivityThread.access$1600(ActivityThread.java:242)
09-05 20:47:01.537 25688 25688 W System.err:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)
09-05 20:47:01.537 25688 25688 W System.err:    at android.os.Handler.dispatchMessage(Handler.java:107)
09-05 20:47:01.537 25688 25688 W System.err:    at android.os.Looper.loop(Looper.java:227)
09-05 20:47:01.537 25688 25688 W System.err:    at android.app.ActivityThread.main(ActivityThread.java:7822)
09-05 20:47:01.537 25688 25688 W System.err:    at java.lang.reflect.Method.invoke(Native Method)
09-05 20:47:01.537 25688 25688 W System.err:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
09-05 20:47:01.537 25688 25688 W System.err:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
09-05 20:47:01.537 25688 25688 W System.err: Caused by: java.lang.ClassNotFoundException: androidx.work.impl.utils.futures.AbstractFuture
09-05 20:47:01.537 25688 25688 W System.err:    ... 15 more
...

标签: javaandroidandroid-workmanager

解决方案


我今天修复了一个类似的问题,该问题实际上是缺失的ListenableFuture,即使异常头看起来和你的一样。

我之前已将此添加到我的构建文件中:

implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'

我这样做是为了避免类重复错误,因为番石榴是从其他地方进口的(另见这个问题)。在依赖 Guava 停止依赖之后,之前修复问题的导入现在导致了问题本身。再次删除它可以解决问题。


推荐阅读