• 【Android】依赖问题


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 艽北 2024-04-09 14:55 采纳率: 0% 浏览 1 首页/ 移动开发 / 【Android】依赖问题 androidgradle 我想在我的android项目中使用fragment和constraintLayout,这看起来没有任何问题。 configurations.all { resolutionStrategy { force 'org.jetbrains.kotlin:kotlin-stdlib:1.8.20' } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.google.code.gson:gson:2.8.6' implementation ('androidx.fragment:fragment:1.6.2'){ exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' } implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' implementation ('androidx.constraintlayout:constraintlayout:2.1.4') testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' } 这是我最后导完的样子,他没有任何用(当然了,删掉exclude和强制执行也会有一样的下面的报错) Caused by: Cause 1: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.20.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.20) and kotlin-stdlib-jdk8-1.6.21.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21) 我不知道怎么办,请帮助我。 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    6条回答 默认 最新

    • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-09 14:55
      关注

      引自免费微信小程序:皆我百晓生

      非常感谢您提供的详细信息。经过仔细分析,我发现您的依赖中有两个名为collections.jdk8.CollectionsJDK8Kt的类,这可能是您遇到的问题的原因之一。

      在Android Studio中,我们可以通过Ctrl + Shift + P打开搜索面板,并输入关键词 java.util.concurrent.ExecutionException: java.lang.RuntimeException: Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.20.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.20) 来查找相关问题。

      以下是解决这个问题的一些建议:

      1. 在build.gradle文件中,添加以下依赖:

        implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.20'
        implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21'
        
      2. 使用 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-ktx:1.5.3' 来处理异步编程问题。

      3. 如果问题仍然存在,请确保你已经正确地创建了一个包含 CollectionsJDK8Kt 的lib目录,而不是仅包含了 Kotlin 标准库。

      4. 在重新构建应用程序时,可以尝试运行以下命令:

        flutter build
        
      5. 如果上述步骤都无法解决问题,那么可能需要考虑进行一些额外的研究或寻求专业的帮助。

      我非常乐意为您提供进一步的帮助。如果您有任何其他问题,请随时告诉我。

      评论 编辑记录
    • 码农阿豪 Java领域优质创作者 2024-04-09 14:55
      关注
      让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
      这个问题的报错信息显示了两个不同版本的kotlin-stdlib库中存在相同的类kotlin.collections.jdk8.CollectionsJDK8Kt。因此,我们需要解决这个冲突来解决问题。 解决方案: 在dependencies中只保留一个版本的kotlin-stdlib库,并且需要检查所有的库的依赖,在其中删除可能引起冲突的版本。 正确的dependencies应该像下面这样: dependencies {
      implementation fileTree(include: ['*.jar'], dir: 'libs')
      implementation 'com.google.code.gson:gson:2.8.6'
      implementation 'androidx.fragment:fragment:1.6.2'
      implementation 'androidx.appcompat:appcompat:1.2.0'
      implementation 'com.google.android.material:material:1.2.1'
      implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
      testImplementation 'junit:junit:4.+'
      androidTestImplementation 'androidx.test.ext:junit:1.1.2'
      implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.20'
      

      } 如果仍然存在冲突,可以通过使用exclude命令删除冲突的库。 例如:如果kotlin-stdlib库中的某个模块导致冲突,可以使用exclude命令删除它,如下所示: implementation ('androidx.fragment:fragment:1.6.2') { exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' } 可以按照这种方式检查所有库的依赖并解决冲突。

      评论
    • 帅次 移动开发领域新星创作者 2024-04-09 15:25
      关注
      configurations.all {
          resolutionStrategy {
              force 'org.jetbrains.kotlin:kotlin-stdlib:1.8.20'
          }
      }
      dependencies {
      
          implementation ('androidx.fragment:fragment:1.6.2'){
              exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7'
          }
      }
      

      这两块导致的,在你提供的Gradle配置中,你使用了resolutionStrategy的force方法强制使用org.jetbrains.kotlin:kotlin-stdlib:1.8.20版本,并在androidx.fragment:fragment依赖中排除了kotlin-stdlib-jdk7模块。这里可能存在的问题主要包括:

      1.版本冲突:强制使用kotlin-stdlib:1.8.20可能会导致与其他依赖项期望的不同版本的kotlin-stdlib产生冲突。如果其他依赖项需要kotlin-stdlib-jdk8(JDK 8特定版本的Kotlin标准库),则可能会出现类路径上的冲突,因为kotlin-stdlib不包含JDK 8特定的API。

      2.功能缺失:如果你的项目使用了JDK 8的特定功能,并且这些功能是通过kotlin-stdlib-jdk8提供的,那么强制使用kotlin-stdlib可能会导致这些功能不可用。

      3.依赖解析不一致:使用force方法强制版本可能会导致依赖解析的结果不如预期,特别是当项目中存在多个不同版本的相同依赖时。Gradle通常会尝试解析出最兼容的依赖版本组合,但force会覆盖这一行为。

      4.更新维护困难:当Kotlin新版本发布时,你需要手动更新force中的版本号,这增加了维护成本和出错的可能性。

      5.不必要的排除:你排除了androidx.fragment:fragment中的kotlin-stdlib-jdk7模块,但在你强制使用kotlin-stdlib的情况下,这个排除可能是不必要的,因为kotlin-stdlib和kotlin-stdlib-jdk7在功能上是相似的,只是后者可能包含了一些JDK 7特定的API。

      评论
    • GISer Liu 2024-04-09 15:49
      关注

      该回答引用自GPT-3.5,由博主GISer Liu编写:

      根据您提供的信息,问题出现在 Kotlin 标准库版本不匹配导致的冲突上。报错提示指出了在不同的 Kotlin 标准库版本中存在重复的类。
      解决这个问题的思路是确保项目中只使用一种 Kotlin 标准库版本。您已经在 configurations.all
      部分尝试了强制使用某个版本的 Kotlin 标准库,但由于约束布局依赖可能使用了不同版本的 Kotlin 标准库,因此仍然存在冲突。
      以下是解决方案的步骤:

      1. 移除 Kotlin 标准库版本强制执行代码 :首先,您需要移除在 configurations.all 中的 Kotlin 标准库版本强制执行代码,因为这可能导致与其他库的冲突。
      2. 统一 Kotlin 标准库版本 :然后,您需要确保项目中只使用一种 Kotlin 标准库版本。为了解决冲突,您可以尝试更新约束布局依赖的版本,使其与项目中已经使用的 Kotlin 标准库版本匹配。
      3. 更新约束布局依赖版本 :在您的 dependencies 部分,约束布局的依赖是 'androidx.constraintlayout:constraintlayout:2.1.4',这里您可以尝试使用与 Kotlin 标准库版本匹配的约束布局版本。假设您使用的 Kotlin 标准库版本是 1.8.20,那么您可以尝试使用约束布局的 2.1.0 版本,因为这个版本的约束布局可能与您的 Kotlin 标准库版本兼容。
      4. 同步其他依赖 :确保其他依赖与 Kotlin 标准库版本和约束布局版本兼容。
        以下是修改后的 dependencies 部分示例:
        groovyCopy code
        dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation 'com.google.code.gson:gson:2.8.6'
        implementation "androidx.fragment:fragment:1.6.2"
        implementation 'androidx.appcompat:appcompat:1.2.0'
        implementation 'com.google.android.material:material:1.2.1'
        implementation 'androidx.constraintlayout:constraintlayout:2.1.0' // 修改为与 Kotlin 标准库版本匹配的约束布局版本
        testImplementation 'junit:junit:4.+'
        androidTestImplementation 'androidx.test.ext:junit:1.1.2'
        }
        
        请替换 "androidx.constraintlayout:constraintlayout:2.1.0" 中的版本号为与您当前项目中
        Kotlin 标准库版本匹配的约束布局版本。
        完成这些步骤后,您的项目应该可以成功构建并且不再出现 Kotlin 标准库版本冲突的错误。

      如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

      展开全部

      评论
    • CSDN-Ada助手 CSDN-AI 官方账号 2024-04-09 16:06
      关注

      【相关推荐】




      如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
      评论
    • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-15 23:18
      关注

      晚上好🌙🌙🌙
      本答案参考ChatGPT-3.5

      问题描述:使用fragment 和 constraintLayout 依赖时存在冲突问题

      解决方案:

      1. 让 Android Studio 消除 DEX 文件冲突

      在 Android Studio 中,DEX 文件冲突提示最常见的就是类的重复,导致编译失败,这种问题可以采用如下的解决方式:

      在自己的 build.gradle 文件中加入如下代码:

      android { ... configurations { all { ... resolutionStrategy { // 依赖冲突的处理方式 force 'com.android.support:support-annotations:26.1.0' } } } }

      这里只是将所有依赖包的冲突解决方式都指定为强制使用某个版本,这样既不会冲突,但是有可能导致某个依赖包版本更高且需要这个新逻辑而并不可用。

      1. 排除不必要的依赖

      查看自己的依赖树,去除冲突且不用的依赖,也是一种必要的做法。

      implementation('com.squareup.okhttp3:okhttp:3.14.1') { // 排除不必要的依赖 exclude group: 'com.google.code.gson' }

      以上代码中,我们排除了 okHttp3 的 gson 依赖,也可以去读 build.gradle 文件中的依赖,逐一分析冲突和是否需要。

      1. 使用 Gradle 插件

      使用来处理冲突的 Gradle 插件的命令为:

      ./gradlew --warning-mode all dependency --configuration compile

      可以直接打印出所有依赖树、冲突、以及未使用的依赖等信息,内容非常丰富。

      修改后的代码:

      configurations.all { resolutionStrategy { force 'org.jetbrains.kotlin:kotlin-stdlib:1.8.20' } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.google.code.gson:gson:2.8.6' implementation ('androidx.fragment:fragment:1.6.2'){ exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' } implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' implementation ('androidx.constraintlayout:constraintlayout:2.1.4'){ exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' } testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' }

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    【JDBC】------ResultSet(结果集)和常见异常
    spring配置文件第一行导致读取配置失败
    【JavaEE】Spring的创建和使用(保姆级手把手图解)
    第四章:数据操作Ⅰ 第二节:读写CSV文件
    Cesium添加自己的专属Logo(2023.10.22)
    手把手带你配置一个DHCP服务器
    擎创技术流 | ClickHouse实用工具—ckman教程(1)部署安装
    java毕业设计——基于java+Spring+SSH的CRM客户关系管理系统设计与实现(毕业论文+程序源码)——CRM客户关系管理系统
    【Java开发】 Spring 04:云服务器 Docker 环境下安装 Redis 并连接 Spring 项目实现简单 CRUD
    Red Hat Enterprise Linux (RHEL) 9 更新了哪些新特性?
  • 原文地址:https://ask.csdn.net/questions/8085663