在Android Studio中构建时如何解决错误“无法解决:org.jetbrains.kotlin:kotlin-stdlib-jre7…”


78

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

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

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

我该如何解决这个错误?


1
@Google,您好,欢迎来到StackOverflow,您可以看看“如何提问”来改善这个问题以及将来的问题。特别是,您应该提供一些“研究成果”和/或一些代码,以证明您已尝试自己解决问题。
Luis MiguelMejíaSuárez'18

@LuisMiguelMejíaSuárez谢谢,我将寻找“如何问”的意思,然后再做一个:)
Google

Answers:


161

kotlin-stdlib-jre[7/8]不久前已弃用,此后已删除。弃用说明一直保留到1.2.71为止,这是发布这些工件的最新版本。官方弃用通知可以在此处找到。使用任何不推荐使用的版本(在删除之前)也应至少在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)的变量在哪里


另外,您可以使用“普通” stdlibkotlin-stdlib)代替特定于JDK的版本。但是您必须以任何一种方式更改依赖关系,因此,我建议您使用kotlin-stdlib-jdk7,或者如果您打算使用Java 8,kotlin-stdlib-jdk8

依赖关系的最新版本也可以在这里找到。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(取决于您最初使用的版本)代替。


3
等待,您在哪里更改了那行代码,甚至添加了它?
乔纳森

2
@jonneybuild.gradle模块。如果您使用其他构建系统,则需要找到该系统的适当代码。除了更改版本外,关键点将更改kotlin-stdlib-jre7为使用的位置kotlin-stdlib-jdk7(或8)。
Zoe

2
酷感谢我固定它通过增加它的gradle这个依赖性来
乔纳森

34

从build.gradle中删除以下行:

implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

在build.gradle中添加以下行:

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

在项目级别更新版本build.gradle:kotlin version ='1.3.0'


7

build.gradleModule:app)中替换

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

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

并在build.gradleModule:project中将版本更改为

ext.kotlin_version = '1.3.0'

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.