程序类型已存在:com.google.common.util.concurrent.ListenableFuture

2023-11-25

我刚刚将我的项目转换为 androidx,现在收到“程序类型已存在”错误com.google.common.util.concurrent.ListenableFuture.

我已经浏览了多个 stackoverflow 解决方案和一些 Gradle 文档,但仍然无法让它工作。

问题是Gradle在这些模块中引入了两个版本的ListenableFuture:

Gradle: com.google.quava:quava:23.5jre@jar 
Gradle: com.google.guava:listenablefuture:1.0@jar

我猜想我想排除第二个,但不知道该怎么做。

你可以在我的 gradle 文件中看到我尝试过的内容,但到目前为止还没有什么乐趣。

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.drme.weathertest"
        minSdkVersion 26
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

//    added 1/2/19 to try and prevent java.lang.NoClassDefFoundError: Failed resolution of:
//    Landroid/view/View$OnUnhandledKeyEventListener;
    configurations.all {
        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
            def requested = details.requested
            if (requested.group == "com.android.support") {
                if (!requested.name.startsWith("multidex")) {
                    details.useVersion "26.+"
                }
            }
        }
//        resolutionStrategy.force 'com.google.quava.listenablefuture:1.0',
//                'com.google.common.util.concurrent.listenablefuture'
    }

//    compile('com.google.guava:listenablefuture:1.0@jar') {
//        // causing "Program type already present" compile errors
//        //exclude("com.google.guava:listenablefuture:1.0")
//        exclude('com.google.guava:listenablefuture')
//        exclude('listenablefuture-1.0.jar')
//        //exclude("maven.com.google.quava.listenablefuture")
//    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main {
            java.srcDirs = ['src/main/java', 'src/main/java/com.drme.weatherNoaa/Data', 'src/main/java/2']
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

dependencies {
    // causing "Program type already present" compile errors // did not fix problem
    implementation('com.google.guava:listenablefuture:1.0') {
        exclude module: 'com.google.guava:listenablefuture'
    }
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'androidx.arch.core:core-testing:2.0.0'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0-alpha01'
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.1.0-alpha01"
    annotationProcessor "androidx.room:room-compiler:2.1.0-alpha03"
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.test.espresso:espresso-core:3.1.1'
    implementation 'com.google.code.gson:gson:2.8.2'
    testImplementation 'junit:junit:4.12'
    implementation 'androidx.test:runner:1.1.1'
    implementation 'androidx.preference:preference:1.1.0-alpha02'
    implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha01'
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
    implementation 'androidx.media:media:1.1.0-alpha01'
    implementation 'androidx.room:room-runtime:2.1.0-alpha03'
    implementation 'androidx.room:room-testing:2.1.0-alpha03'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    implementation 'androidx.core:core:1.1.0-alpha03'
    implementation 'androidx.room:room-compiler:2.1.0-alpha03'
}

如果我正确地查看依赖关系,它看起来像是来自androidx.core:core:1.1.0-alpha03.

+--- androidx.core:core:1.1.0-alpha03@aar
+--- androidx.concurrent:concurrent-futures:1.0.0-alpha02@jar
+--- com.google.guava:listenablefuture:1.0@jar   

如有建议,我们将不胜感激。谢谢。


找到了问题和答案。查看项目视图中的外部库,我发现了以下内容:

Gradle: com.google.guava:guava:23.5-jre@jar 
 |_ guava-23.5-jre.jar 
    |_com.google
      |_common 
        |_util.concurrent
          |_ListenableFuture

Gradle: com.google.guava:listenablefuture:1.0@jar
 |_listenablefuture-1.0.jar
   |_com.google.common.util.concurrent
     |_ListenableFuture

第二个条目中唯一的东西是重复的 ListenableFuture。

通过在 gradle 构建文件中添加以下条目,这个问题就消失了:

configurations.all {
        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
            def requested = details.requested
            if (requested.group == "com.android.support") {
                if (!requested.name.startsWith("multidex")) {
                    details.useVersion "26.+"
                }
            }
        }

        all*.exclude group: 'com.google.guava', module: 'listenablefuture' <===This fixed the problem
    }

我无法弄清楚是什么产生了com.google.guava:listenablefuture:1.0@jar,但由此产生的问题得到了解决。

感谢所有审查该问题的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

程序类型已存在:com.google.common.util.concurrent.ListenableFuture 的相关文章

  • Android:使用 OAuth 访问 google 任务时出现问题

    由于 google 任务没有公共 api 我想编写解决方法并像浏览器一样请求数据 然后解析结果以进一步显示 为了访问数据 我使用 google 实现了 OAuth 身份验证来访问此 url https mail google com htt
  • 升级 Grails 应用程序时compileAssets 失败

    我有一个运行版本 3 3 的 Grails 应用程序 我最近升级到版本4 0 3 我通常升级的方式 据我所知可能不是最好的方式 是将我的环境升级到新的 Grails 版本 然后创建一个全新的 Grails 项目 我正在使用 IntelliJ
  • FTS3 在 ORMLite 中搜索?

    我对 FTS3 一无所知 除了http developer android com guide topics search search dialog html http developer android com guide topics
  • 通过 WhatsApp 发送消息

    由于我发现了一些较旧的帖子 表明 Whatsapp 不支持此功能 我想知道是否发生了变化 以及是否有办法打开与我通过意图发送的号码进行 Whatsapp 聊天 UPDATE请参阅https faq whatsapp com en andro
  • Service 和 IntentService,运行从服务器轮询数据库值的服务哪个更好?

    我读过很多关于Service and IntentService 然而 当做出决定时 我没有足够的信心选择使用哪种类型来创建一个后台服务 该服务将在一定时间间隔内从数据库轮询数据 并在获得所需数据时停止它 因为数据代表请求的状态 例如 订购
  • 使用 ADB 命令获取 IMEI 号码 Android 12

    对于 11 之前的 Android 版本 我使用以下命令从我的设备获取 IMEI 号码 adb shell service call iphonesubinfo 4 cut c 52 66 tr d space or adb shell s
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • 如何为发布而不是调试创建密钥库?扑

    我按照使用此网站部署 flutter 的步骤进行操作https flutter io android release https flutter io android release 当我运行 flutter build apk 时出现此错
  • Android 应用程序中的 Eszett (ß)

    我的 res layout activity 文件中的德语 字符在我的应用程序中自动转换为 ss 即使我将语言和键盘设置为德语 它仍然不会显示 Android 中可以显示 吗 edit
  • 获取手机的 z 轴和磁北极(而不是 y 轴)之间的角度

    我知道如何使用 getOrientation 方法获取手机 y 轴和磁北之间的方向角 如此处所述https developer android com guide topics sensors sensors position https
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • PhoneStateListener 不调用

    这是我的完整代码 广播示例 java package com example broadcast gt import android app Activity import gt android content Context import
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM
  • 有关 ListView 自定义行布局项目上的 onClick() 事件的帮助

    我有一个 ListView 其行由我格式化 每行都有 ImageView 和 TextView 的混合 我还实现了自己的适配器 并且能够通过它绘制每一行 现在 我想要这样的东西 用户单击 ImageView 不是行上的其他任何位置 但只有此
  • 如何在android asynctask中使用inputstream作为参数?

    我正在制作一个 Android 应用程序来跟踪股票详细信息 我将通过 csv 雅虎财经 检索数据 据我所知 在android 4 0中 网络连接无法在主线程上完成 因此 我将使用 asynctask 来建立连接 但是 我在参数方面遇到了一些
  • Android:监听状态栏通知

    有没有办法在状态栏被下拉时监听通知 1 用于检测状态栏变化 您可以注册一个监听器来获取系统UI可见性变化的通知 因此 要在您的活动中注册侦听器 Detecting if the user swipe from the top down to
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro
  • 在Android Studio gradle项目中使用NDK和STL

    我在将 stlport 链接到 Android Studio 中的 gradle 项目时遇到问题 使用 NDK 的 Eclipse Android 项目迁移到 Android Studio 该项目使用 STL 我有包含内容的 android
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组

随机推荐

  • Azure 存储模拟器将数据存储在特定路径上

    在我当前的电脑设置中 我安装了 SSD 和普通硬盘 SSD 的容量只有 120GB 由于我正在开发一个大型应用程序 该应用程序将大量文件存储在 azure blob 存储中 因此我希望指定 microsoft azure 存储模拟器必须将我
  • Linux下的php串口通信

    我已经在 fedora 13 中安装了 xampp 我正在尝试使用 php 串行类通过串行端口与微控制器进行通信 我的代码是 example php include php serial class php serial new phpSe
  • 当 mypy 无法注释时,为什么它会抱怨列表理解?

    为什么 Mypy 抱怨它需要列表理解变量的类型注释 而无法使用 MyPy 注释这样的变量 具体来说 如何解决以下错误 from enum import EnumMeta def spam y EnumMeta return x value
  • Android 中的展开和折叠工具栏

    我正在借助折叠工具栏实现展开和折叠工具栏 但是当我的工具栏折叠时我陷入困境 我想显示不同的工具栏 我看过这样一段代码 但无法找到我的解决方案 我还看到了一位出色的开发人员的解决方案https github com saulmm Coordi
  • Response.Redirect() 与 Response.RedirectPermanent()

    我是 ASP Net 4 0 的新手 并且看到了一个名为Response RedirectPermanent 我查了一些文章 但我无法清楚地理解它们的实际含义和区别Response RedirectPermanent over Respon
  • CSS样式优先

    我在 CSS 声明优先级方面遇到问题 我的页面包含一个带有规则的外部 CSS 文件和一些内联 CSS 声明 这些声明应该覆盖该规则 据我了解 内联样式声明应该覆盖外部 CSS 声明 但是 当我在 Chrome 中查看页面时 表格的第二行显示
  • 泛型:什么是“构造函数约束”?

    我制作了一个自定义 TObjectList 后代 旨在保存基对象类的子类 它看起来像这样 interface TMyDataList
  • 如何在 java 8 中使用 lambda 表达式重写基类方法?

    Lambda 表达式必须转换为函数式接口 据我所知 他们无法扩展课程 但我想知道是否有办法获得类似的东西 I have java nio file SimpleFileVisitor
  • 如何在 WPF DataGrid 中定义自己的列?

    我有一个AutoGenerateColumnsWPF DataGrid 在代码隐藏中绑定到 LINQ to SQL 效果很好 但当我脱下AutoGenerateColumns并定义我自己的列 它告诉我 使用 ItemsSource 之前 项
  • 我可以写入 Azure 网站上的文件系统吗?

    我可以写入 Azure 网站上的文件系统吗 例如 从仪表板更新或安装 WordPress 中的插件 主题 AFAIK 这在 Heroku 上是不可能的 那么 Azure 网站呢 当然可以在Azure网站的文件系统上写入 但是 您的写入权限仅
  • 使用 SQLAlchemy ORM 高效更新数据库

    我正在启动一个新应用程序并考虑使用 ORM 特别是 SQLAlchemy 假设我的数据库中有一个列 foo 我想增加它 在直接 sqlite 中 这很简单 db sqlite3 connect mydata sqlitedb cur db
  • JSON 模式中的“$id”属性用法

    我在用着JSON 模式用于验证数据 我认为使用保留关键字 id 可能会导致我的模式出现错误 该字段的目的是指定另一个平台上的属性的 REMOTE ID 是什么 所以这就是 起源 ID 您能否告知 id 是什么以及我是否犯了一个严重错误并且该
  • 将 OpenCV 构建为静态库

    也许我遗漏了一些东西 但我无法构建 opencv 的静态库 Setup 库班图 12 04 海湾合作委员会4 6 3 使 3 81 cmake 2 8 7 opencv 2 4 6 1 现场最后可用 我手动完成所有工作 我尝试使用 cmak
  • 渲染方法 libgdx 中的增量值

    我在 Screen 类的渲染方法中检查了增量值 我看到它不是恒定的 任何人都可以说出它来自哪里以及它是什么吗 不同的屏幕尺寸有什么不同吗 如果是这样 我们怎样才能克服这个问题呢 我问这个是因为我的玩家跳跃取决于增量时间 有时它跳得太高 Th
  • 使用可选关键字参数定义类的 __init__ 方法的更好方法是什么?

    我希望班级做同样的事情如下 class Player def init self kwargs try self last name kwargs last name except pass try self first name kwar
  • 反应改变输入值 onChange

    这是我的搜索表单 js handleKeywordsChange必须处理输入keywords changes import React from react import ReactDOM from react dom class Sear
  • 使用相同的代码,TCPDF 比 FPDF 慢两倍

    我目前使用 FPDF 创建一些相当复杂的报告 并尝试升级到 TCPDF 但我发现通过 TCPDF 运行的相同代码大约慢两倍 因为我的 PDF 生成时间已经长达一分钟 所以我实在无法承受这种速度变慢的后果 但我真的很想利用一些 TCPDF 功
  • 返回受 UPDATE 语句影响的行数

    如何获取存储过程 SQL Server 2005 中受 UPDATE 查询影响的行数作为结果集 例如 CREATE PROCEDURE UpdateTables AS BEGIN SET NOCOUNT ON added to preven
  • RxJS 中的链接可观察量

    我正在学习 RxJS 和 Angular 2 假设我有一个包含多个异步函数调用的承诺链 这些调用取决于前一个函数的结果 如下所示 var promiseChain new Promise resolve reject gt setTimeo
  • 程序类型已存在:com.google.common.util.concurrent.ListenableFuture

    我刚刚将我的项目转换为 androidx 现在收到 程序类型已存在 错误com google common util concurrent ListenableFuture 我已经浏览了多个 stackoverflow 解决方案和一些 Gr