kotlin - 在 Android Studio 中构建时如何解决错误 "Failed to re

我通过选中 Android Studio 3 中的“include kotlin”框创建了一个新项目,并且开箱即用我在编译时遇到错误

"Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7..."

我已确保所有插件都是最新的,并且 Android SDK 已正确安装。

我该如何解决这个错误?

最佳答案

kotlin-stdlib-jre[7/8] 不久前被弃用,此后已被删除。弃用说明一直保留到 1.2.71 ,这是发布这些工件的最后一个版本。官方弃用通知可见here .使用任何已弃用的版本(在它被删除之前)也应该在(至少)Android Studio 和 IntelliJ 中产生警告。

使用 kotlin-stdlib-jdk7反而。它与 kotlin-stdlib-jre7 的依赖关系相同(更新版本除外),但它被重命名为 kotlin-stdlib-jdkkotlin-stdlib-jre 现在不再作为单独的依赖项进行维护。

IntelliJ 和 Android Studio 目前都使用 kotlin-stdlib-jre7 生成新项目; 这可能是一个错误。他们可能没有更新项目生成器。因此,您必须手动将依赖项替换为工作依赖项,直到他们解决此问题。这取决于 Kotlin 插件。如果还没有,请更新它。 我还没有检查它是否被修补——如果有,那只会修复新项目的创建。对于从旧版本更新,其余答案仍然适用

如果您使用的是 1.2.71 或更低版本,并且您正在升级到 1.3.0 或更高版本,那么您自然必须这样做。

这些是 Kotlin 1.3.0 中新的有效依赖项:

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

其中 $kotlinVersion 是包含版本的变量,或者是硬编码的版本(即 1.3.0)


或者,您可以使用 the "plain" stdlib (kotlin-stdlib) 而不是特定于 JDK 的版本。但是你必须改变你的依赖,所以我建议你使用 kotlin-stdlib-jdk7,或者如果你打算使用 Java 8,kotlin-stdlib-jdk8

最新版本的依赖也可以找到here . jdk7、jdk8 和版本不特定的 stdlib 都遵循相同的版本(根据此编辑 - 这可能会在未来发生变化,但在更改发生之前可能会有通知),所以无论您检查 jdk8、jdk7 还是常规版本,所有版本都应该在 stdlib 工件中普遍可用。

其他构建系统的注意事项

同样的实际解决方案也适用于其他构建系统,但代码不同。由于有很多构建系统,我不打算包括所有这些,但重点是将工件从 kotlin-stdlib-jre[num] 更改为 kotlin-stdlib -jdk[num] (当然不带括号)。或者,如前所述,kotlin-stdlib

独立于构建系统,这基于对 Maven Central 和类似存储库的访问。如果您的构建系统不支持这一点,和/或违反 Maven 风格的约定和存储库,您必须找到适合您的构建系统的方法。

TL;DR:

使用 org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_versionorg.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version(取决于您最初使用的是哪个版本)。

关于kotlin - 在 Android Studio 中构建时如何解决错误 "Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53448450/

相关文章:

java - 在 Kotlin 中定义 log TAG 常量的最佳方法是什么?

android - Kotlin - 将 List 转换为 MutableList 的最惯用方式

java - 如何将 Java 源文件的一部分转换为 Kotlin?

java - 将 Kotlin 数据对象映射到数据对象的更好方法

dictionary - Kotlin 是否有 Map 文字的语法?

kotlin - 如何在 Kotlin 中写入文件?

kotlin - 如何将项目添加到 Kotlin 中的 ArrayList?

generics - kotlin 中的 out 关键字是什么

kotlin - 如何从命令行运行 Kotlin 类?

kotlin - 如何在 Kotlin 中迭代 hashmap?