mid*_*ers 392 java dependencies android kotlin

我不断收到错误,表明类中存在重复错误。 这是我在 org.jetbrains.kotlin 文件夹.idea/libraries下的内容
问题似乎是因为 Kotlin 有两种不同的依赖项,来自stdlib和stdlibjdk8,但我不知道如何从我的模块/项目依赖项中删除其中之一。我该怎么做?
这是完整的错误代码:
Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.io.path.ExperimentalPathApi found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.io.path.PathRelativizer found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.io.path.PathsKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.io.path.PathsKt__PathReadWriteKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.io.path.PathsKt__PathUtilsKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.jdk7.AutoCloseableKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.jvm.jdk8.JvmRepeatableKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.random.jdk8.PlatformThreadLocalRandom found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.streams.jdk8.StreamsKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$1 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$2 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$3 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$4 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.text.jdk8.RegexExtensionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.time.jdk8.DurationConversionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Run Code Online (Sandbox Code Playgroud)
我尝试从 org.jetbrains.kotlin 中删除文件,但每当我在 Android Studio 中构建应用程序时,这些文件都会再次重新下载。
这是我的模块应用程序Gradle代码:
plugins {
id 'com.android.application'
id 'com.google.gms.google-services'
}
android {
compileSdk 33
defaultConfig {
applicationId "com.example.umfs"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildFeatures {
viewBinding true
}
namespace 'com.example.umfs'
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.7.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.google.firebase:firebase-database:20.1.0'
implementation 'androidx.preference:preference:1.2.0'
implementation 'com.google.firebase:firebase-auth:21.1.0'
implementation 'com.google.firebase:firebase-core:21.1.1'
implementation 'androidx.navigation:navigation-fragment:2.5.3'
implementation 'androidx.navigation:navigation-ui:2.5.3'
implementation 'com.google.firebase:firebase-firestore:24.4.1'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0'
implementation 'de.hdodenhof:circleimageview:3.1.0'
implementation "androidx.cardview:cardview:1.0.0"
implementation 'com.google.firebase:firebase-firestore:24.4.1'
implementation 'com.google.firebase:firebase-storage:20.1.0'
implementation 'com.google.firebase:firebase-database'
implementation platform('com.google.firebase:firebase-bom:28.4.0')
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.makeramen:roundedimageview:2.3.0'
implementation 'com.github.bumptech.glide:glide:4.14.2'
implementation 'com.github.marlonlom:timeago:4.0.3'
implementation "androidx.core:core-ktx:+"
}
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
小智 304
简单地。对我来说,只需将此 Gradle 插件从 1.7.10 更改为 1.8.0 然后同步 \xe2\x86\x92 使缓存 \xe2\x86\x92 构建无效
\n从:
\nplugins {\n ....\n id 'org.jetbrains.kotlin.android' version '1.7.10' apply false\n}\nRun Code Online (Sandbox Code Playgroud)\n到:
\nplugins {\n ....\n id 'org.jetbrains.kotlin.android' version '1.8.0' apply false\n}\nRun Code Online (Sandbox Code Playgroud)\n
Dav*_*ser 221
请参阅Kotlin 官方文档中的此注释,了解对齐如何与这些依赖项和构建标志配合使用的说明。下面的原始答案是另一种方法,没有考虑到这一点。
这是因为kotlin-stdlib-jdk7和kotlin-stdlib-jdk8是应该替换的旧依赖项kotlin-stdlib(正如 @MrPNG 从 Kotlin 1.8 的新文档中指出的那样)。但是,其他库可能仍然声明对它们的依赖关系,需要将其替换为对kotlin-stdlib.
您可以像这样覆盖 jdk7 和 jdk8 版本的解析方式(在您的 中app/build.gradle):
dependencies {
constraints {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") {
because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
}
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") {
because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的部分constraints可以与其他依赖项一起添加。选择版本(此处1.8.0)以匹配您实际想要使用的版本,该版本应该是您的非 jdkN 命名版本位于重复类错误中的版本(例如,(org.jetbrains.kotlin:kotlin-stdlib:1.8.0))
如果此文件中有apply plugin: 'kotlin-android'此文件,则不需要单独说明依赖项中的 stdlib,因此请删除如下所示的任何行:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
Run Code Online (Sandbox Code Playgroud)
(感谢这个博客)
小智 150
我已经尝试了以前的所有解决方案,但添加以下代码后它就可以工作了。
dependencies {
... ... ...
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
... ... ...
}
Run Code Online (Sandbox Code Playgroud)
Pra*_*nth 60
将 Android 注释库从版本 1.4.0 升级到 1.6.0 后,我遇到了同样的错误,
implementation 'androidx.annotation:annotation:1.6.0'
Run Code Online (Sandbox Code Playgroud)
所以我降级到1.5.0,错误消失了:
implementation 'androidx.annotation:annotation:1.5.0'
Run Code Online (Sandbox Code Playgroud)
Tra*_*ien 40
升级 kotlin android 插件和 kotlin 编译器
plugins {
id 'org.jetbrains.kotlin.android' version '1.8.10'
}
android {
composeOptions {
kotlinCompilerExtensionVersion = "1.4.3"
}
}
Run Code Online (Sandbox Code Playgroud)
小智 30
您现在可以将生命周期依赖项更新为最新版本,只需在 build.gradle 中添加以下行即可
dependencies {
(...)
// Fix Duplicate class
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
}
Run Code Online (Sandbox Code Playgroud)
小智 27
我尝试了很多方法来解决这个相同的问题,但没有成功我尝试在我的“ build.gradle(module:app) ”下面添加这个依赖项。
implementation (platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
Run Code Online (Sandbox Code Playgroud)
然后立即同步,它将解决此错误。
Moh*_*hat 23
我通过更改根build.gradle文件中的 Kotlin 类路径依赖关系解决了这个问题
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20-RC"
Run Code Online (Sandbox Code Playgroud)
到
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0"
Run Code Online (Sandbox Code Playgroud)
小智 14
在 flutter 中编辑 app/build.gradle 文件
dependencies {
(...)
// Fix Duplicate class
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
}
Run Code Online (Sandbox Code Playgroud)
pat*_*val 13
我之前在我们的 SDK 中使用过org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10,然后我将 kotlin 更新到 v1.8.0,就在那时我开始在 Android Java 前端应用程序中收到上述错误。使用org.jetbrains.kotlin:kotlin-bom解决了传递依赖的问题,并且可能是一种更干净的方法,因为它不会将 Kotlin 详细信息泄漏到 Java 应用程序中。
所以我刚刚更换了
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10"
Run Code Online (Sandbox Code Playgroud)
下面为我解决了问题。
// Align versions of all Kotlin components
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.0"
Run Code Online (Sandbox Code Playgroud)
Arb*_*lam 13
在build.gradle(Module:app)中添加以下行
dependencies {
(...)
// Fix Duplicate class
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
}
Run Code Online (Sandbox Code Playgroud)
这是因为kotlin-stdlib-jdk7和kotlin-stdlib-jdk8是较旧的依赖项,应由kotlin-stdlib替换。但是,其他库可能仍然声明对它们的依赖关系,需要将其替换为对kotlin-stdlib的依赖关系。
小智 11
通过在 build.gradle(app) 文件中添加依赖项可以解决此问题
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0"
Run Code Online (Sandbox Code Playgroud)
它工作正常
如果您使用 Compose,则需要同时将 Compose 编译器 ( https://developer.android.com/jetpack/androidx/releases/compose-compiler ) 更新到 1.4.2,将 Kotlin 更新到 1.8.10。
小智 8
使用:
configurations.all {
resolutionStrategy {
force 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10'
}
}
Run Code Online (Sandbox Code Playgroud)
将其添加到 Gradle 文件的末尾会有所帮助。
第 1 步:添加此内容
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android' version '1.8.10' apply false
}
Run Code Online (Sandbox Code Playgroud)
第 2 步:将其添加到依赖项上
dependencies {
.....
constraints{
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.10'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10'
}
}
Run Code Online (Sandbox Code Playgroud)
注意:版本'1.8.10',jdk7:1.8.10和jdk8:1.8.10是相同的......
我的 Kotlin 项目也遇到了同样的错误。当我将 Ktor 添加到我的项目并升级库版本时,然后出现连线长错误。我就是这样解决的。
我使用 compose 版本 1.4.0
ext {
compose_ui_version = '1.4.0'
}
Run Code Online (Sandbox Code Playgroud)
kotlin版本1.8.0,最新的1.8.10与compose不兼容1.4.0所以我用了,
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
Run Code Online (Sandbox Code Playgroud)
然后,调整composeOptions应用程序级别的 build.gradle 文件,例如
composeOptions {
kotlinCompilerExtensionVersion '1.4.0'
}
Run Code Online (Sandbox Code Playgroud)
这是我所做的三项更改,并且我摆脱了有线错误。希望这会对某人有所帮助。
lifecycle-viewmodel-ktx-2.6.1
Run Code Online (Sandbox Code Playgroud)
向下
lifecycle-viewmodel-ktx-2.5.1
Run Code Online (Sandbox Code Playgroud)
我设法通过降低依赖值来使其工作。
小智 6
我通过使 Compose Compiler 和 JetBrains Kotlin 插件兼容来修复它
首先,确保您使用的org.jetbrains.kotlin.android插件版本高于 1.8.0。
构建.gradle(项目)
plugins {
...
id 'org.jetbrains.kotlin.android' version '1.8.21' apply false
}
Run Code Online (Sandbox Code Playgroud)
然后从下面的链接检查 Compose 编译器的兼容版本并更新build.gradle(app):
https://developer.android.com/jetpack/androidx/releases/compose-kotlin#pre-release_kotlin_compatibility
android {
...
composeOptions {
kotlinCompilerExtensionVersion '1.4.7'
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
现在早期 KGP 版本的解决方法是:
dependencies {
constraints {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") {
because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
}
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") {
because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
将其添加到您的依赖项中,它将解决该错误。
dependencies {
(...)
// Fix Duplicate class
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
}
Run Code Online (Sandbox Code Playgroud)
根据 Kotlin 1.8.0 的发行说明(https://kotlinlang.org/docs/whatsnew18.html#updated-jvm-compilation-target),您不应再将kotlin-stdlib-jdk7Nor指定kotlin-stdlib-jdk8为依赖项,而只需使用kotlin-stdlib.
| 归档时间: |
|
| 查看次数: |
227981 次 |
| 最近记录: |