冲突的jetified-kotlin-reflect依赖

14

当我构建我的Android项目时,我会收到以下消息:

w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
    /home/janek/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.3.10/4d147bf43060dc43d61b096e24da1e67dfe0c032/kotlin-stdlib-jdk7-1.3.10.jar (version 1.3)
    /home/janek/.gradle/caches/transforms-1/files-1.1/kotlin-reflect-1.0.6.jar/beba9d201a205f30041b70982540014d/jetified-kotlin-reflect-1.0.6.jar (version 1.0)
    /home/janek/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.11/4cbc5922a54376018307a731162ccaf3ef851a39/kotlin-stdlib-1.3.11.jar (version 1.3)
    /home/janek/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.11/d8b8e746e279f1c4f5e08bc14a96b82e6bb1de02/kotlin-stdlib-common-1.3.11.jar (version 1.3)
w: Some runtime JAR files in the classpath have an incompatible version. Consider removing them from the classpath

但我不知道为什么jetified-kotlin-reflect会在其中,因为它不是一个依赖项,甚至没有出现在androidDependencies中。

你知道它是从哪里来的或者我如何解决这个错误吗?


这看起来像是一个警告。你能给我们展示一下你的 build.gradle 文件吗? - Jared Burrows
我大约有15个build.gradle文件,你确定这会有帮助吗?这些文件中没有任何关于kotlin-reflect的引用,而且所有的kotlin库都是1.3版本。 - xeruf
1个回答

19
我猜kotlin插件会自动添加反射特性,例如类字面语法时,会自动添加kotlin-reflection.jar
在Java平台上,使用反射功能所需的运行时组件作为单独的JAR文件(kotlin-reflect.jar)分发。这样做是为了减少不使用反射功能的应用程序所需的运行时库的大小。如果您确实使用了反射,请确保将.jar文件添加到项目的类路径中。
我通过显式添加来修复了警告。
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"

到我的 build.gradle 文件。


1
我现在使用gradle 7和kotlin 1.5.31遇到了同样的问题,相同的包(reflect 1.4.31)比其他包旧,尽管没有显式实现reflect。通过这种方式解决了问题,但这似乎是插件中的一个bug? - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接