我通过选中 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-jdk
。 kotlin-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 风格的约定和存储库,您必须找到适合您的构建系统的方法。
使用 org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version
或 org.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/