问题似乎是因为 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)
我试过从 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'
简单。对我来说,只需将此 gradle 插件从 1.7.10 更改为 1.8.0 然后同步。 => 使缓存无效 => 构建
来自:
plugins {
....
id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
}
致:
plugins {
....
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
}
这是因为
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")
}
}
}
上面的
constraints
部分可以与其他依赖项一起添加。选择版本(这里是1.8.0
)来匹配你真正想要使用的版本,应该是你的非jdkN命名版本在重复类错误中的版本(例如(org.jetbrains.kotlin:kotlin-stdlib:1.8.0)
)
如果你在这个文件中有
apply plugin: 'kotlin-android'
,那么它不需要单独也说依赖于stdlib in dependencies,所以删除任何看起来像这样的行:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
(感谢这个博客)
如果您使用的是 Compose,则需要同时将 Compose 编译器 (https://developer.android.com/jetpack/androidx/releases/compose-compiler) 更新到 1.4.2,将 Kotlin 更新到 1.8.10 .
我通过更改根
build.gradle
文件中的 kotlin 类路径依赖关系解决了这个问题
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20-RC"
到
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0"
根据 Kotlin 1.8.0 的发行说明(https://kotlinlang.org/docs/whatsnew18.html#updated-jvm-compilation-target),您不应将
kotlin-stdlib-jdk7
或 kotlin-stdlib-jdk8
指定为不再依赖,而只是使用 kotlin-stdlib
.
对于 compose,使用 material3 的稳定版本
androidx.compose.material3:material3:1.0.1
比
id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
这可能是一些更新的版本依赖。在我的新撰写应用程序中,当我更新
实现'androidx.compose.material3:material3:*'(新版本) 从 1.0.0-alpha11
我会得到这个错误。尝试还原更新的依赖项
最近,我遇到了同样的问题,大部分重复的类都属于 Kotlin。其中一个错误是这样的:
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.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21)
我遇到这个问题是因为我使用的是有问题的 kotlin 版本。将您的 kotlin 版本升级到
1.8.0-Beta
。按照这个:
在您的
android/build.gradle
中,首先在ext
部分添加:
kotlinVersion = "1.8.0-Beta"
现在,转到依赖项部分并添加:
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
最后,确保您的
JAVA_HOME
指向JDK11。
做这些解决了我的问题。希望对您有所帮助!
我在 2 天前工作时遇到了同样的问题......
我改成
composeOptions {
kotlinCompilerExtensionVersion '1.3.2'
}
和
id 'org.jetbrains.kotlin.android' version '1.7.20' apply false
在 build.gradle(项目)中
然后清理并重建项目。
我在我的项目中遇到了同样的错误,但我的错误是由具有不同版本的不同 jetpack compose 库引起的,我输入了特定的版本号
"1.3.3"
,这导致找不到其他具有更高版本号的库。我通过使用为每个库提供最新版本的 compose BOM 来解决这个问题
我在升级到这两个库后特别注意到了这个问题:
Material3
版本1.1.0-alpha05
Runtime-livedata
版本1.4.0-beta01
这是完全依赖关系:
implementation 'androidx.compose.runtime:runtime-livedata:1.4.0-beta01'
implementation 'androidx.compose.material3:material3:1.1.0-alpha04'
这是我遇到的错误
Jdk-18.0.2
重复类 kotlin.collections.jdk8.CollectionsJDK8Kt 在 模块 kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) 和 kotlin-stdlib-jdk8-1.7.20
暂时的解决方法是降级这两个库,直到错误被纠正或更新。
implementation 'androidx.compose.material3:material3:1.1.0-alpha04'
implementation 'androidx.compose.runtime:runtime-livedata:1.4.0-alpha01'
请注意,可能还有其他依赖项受到影响,如果您最近升级了依赖项,您可能需要回滚更新并逐个删除库以找出有问题的。
升级 kotlin android 插件和 kotlin 编译器
plugins {
id 'org.jetbrains.kotlin.android' version '1.8.10'
}
android {
composeOptions {
kotlinCompilerExtensionVersion = "1.4.3"
}
}