我收到以下警告,但不确定v1.0.6所在的位置。
此错误是否有可能来自Kotlin库,包括旧的Kotlin版本?
关于如何解决它的任何想法,或者至少我如何遵循使Kotlin-reflect明确(1.1)的建议?
Answers:
看来您的项目是以依赖于kotlin-stdlib
1.1和kotlin-reflect
1.0的方式配置的。最可能的情况是您已经明确依赖于kotlin-stdlib
1.1,但没有依赖于kotlin-reflect
,而某些其他库(您所依赖)则依赖于kotlin-reflect
1.0。
如果确实如此,解决方案是提供对kotlin-reflect
1.1的显式依赖。
在Maven中,将其添加到pom.xml
:
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
在Gradle中,将其添加到build.gradle
:
dependencies {
implementation "org.jetbrains.kotlin:kotlin-reflect:1.1.0"
}
请参阅官方文档中有关此警告和相关警告的一些信息。
我通过覆盖应用中使用的Kotlin版本来修复警告
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'org.jetbrains.kotlin' && requested.name == 'kotlin-reflect') {
details.useVersion kotlin_version
}
}
}
例如 kotlin_version = 1.3.0
android {}
例如
首先,通过下面的gradle脚本找出原因
./gradlew app:dependencies
(更改app
为gradle模块名称)
+--- project :common
| +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.61
| | +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61
| | \--- org.jetbrains:annotations:13.0
| +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3
| | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61
| +--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:0.12.0 -> 0.14.0
| | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.60 -> 1.3.61
然后,将显示依赖关系树。检查哪个依赖项使用问题依赖项。
如果找到依赖项,请决定如何解决它。
我不确定什么是最好的方法。请参考一下。
当您在Kotlin专案(android)中使用匕首且Kotlin版本为1.7时,即会发生
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
所有您需要做的就是将下面的依赖项添加到您的应用程序构建gradle级别
implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.50"
确保使用相同版本的stdlib-jdk7
&kotlin-gradle-plugin
依赖项以避免警告。
您可以参考以下示例,其中stdlib-jdk7
&kotlin-gradle-plugin
都具有相同的版本
应用程序级build.gradle文件
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.0"
...
}
项目级别的build.gradle文件
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0"
...
}
}
我遇到了同样的问题,但这是由于Dagger错误注入