Kotlin错误:找不到org.jetbrains.kotlin:kotlin-stdlib-jre7:1.0.7


101

我将Kotlin插件安装到我的应用程序(v.1.1.1-release-Studio2.2-1)中,然后选择“在项目中配置Kotlin”,选择了1.0.7的编译器和运行时版本。Kotlin更新了我的Gradle文件。现在,当我尝试构建时,我得到:

错误:配置项目':app'时发生问题。无法解析配置':app:_debugApkCopy'的所有依赖项。找不到org.jetbrains.kotlin:kotlin-stdlib-jre7:1.0.7。要求:

MyApplication:app:未指定

我不确定我在这里缺少什么。


2
发布您的项目级别gradle
Patel Pinkal,2017年

这是您添加对Android的Kotlin支持的方式:kotlinlang.org/docs/reference/using-gradle.html
IgorGanapolsky

Answers:


160

更换

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

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

由于带有jre的版本是绝对版本,因此只需替换并同步项目

这里的官方文档感谢您的链接@ ROMANARMY

快乐编码:)


1
文档中有关jdk和jre的一些有用信息。
R0MANARMY

我相信有一天,Android团队将使事情变得简单一些,或者至少他们会以粗体显示在changelog中的重大更改,而不是将其深深埋入要挖掘的网站中:))
Farid

12
我花了整整一分钟的时间凝视着jre和之间的区别jdk-我一定要老了。
James Wang

32

在项目级别build.gradle仅使用此版本

ext.kotlin_version ='1.3.31'

删除其他版本

这仅适用于最新版本的android studio 3.4

更新:尝试将kotlin的最新版本与最新的Android studio一起使用,以避免出现错误。


22
没有说明就指定要使用的魔术版本的答案并没有多大帮助,而且随着时间的流逝,其帮助会越来越小。您是否建议从较低版本升级?还是因为较高版本存在错误而从较高版本降级?
唐·哈奇

3
@DonHatch这个答案是三月份针对android studio 2.2给出的,它在问题中上面提到了错误。它不适用于android studio 3.0或更高版本。
Patel Pinkal

下面的@ 0xalihn答案提供了没有魔术版本号的正确解决方案
Lou Morda

@PatelPinkal您可以为最新的Android Studio版本更新答案。
Arbaz.19年

1
我更新了最新的Android Studio版本答案
Arbaz.in

21

的分裂kotlin-stdlibkotlin-stdlib-jre7kotlin-stdlib-jre8只与科特林1.1推出,这就是为什么依赖关系不能得到解决,包的版本根本不存在。

看来您的项目文件更新有时会失败,并将Kotlin版本设置为1.0.7。如果这是一个新项目,并且没有任何阻碍您使用1.1.1的东西,那么我将切换到该项目。完成此操作后,您的问题应该消失了。


3
感谢您的解释。一些答案说使用1.1.1时没有解释,这会使答案在将来迅速变得无用。
唐·哈奇

12

在“ build.gradle”文件中,更改该行的当前Kotlin版本,然后按synk:

ext.kotlin_version = '1.1.1'

///看起来像:

//顶层构建文件,您可以在其中添加所有子项目/模块共有的配置选项。

buildscript {
    ext.kotlin_version = '1.1.1'
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

8

从Kotlin 1.1.2开始,org.jetbrains.kotlin默认情况下,使用来自所应用插件的版本来解析group的依赖项。您可以使用完整的依赖项表示法手动提供版本,例如:

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

如果您以JDK 7或JDK 8为目标,则可以使用Kotlin标准库的扩展版本,其中包含针对新JDK版本中添加的API的其他扩展功能。代替kotlin-stdlib,请使用以下依赖项之一:

compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"

7

如果您使用的是Android Studio 3.2,则是一个新的解决方案,我通过在项目的build.gradle中添加mavenCentral()解决了此问题:

buildscript {
    ext.kotlin_version = '1.3.0'
    repositories {
        mavenCentral()
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

    }
}

allprojects {
    repositories {
        mavenCentral()
        google()
        jcenter()
    }
}

您应按此顺序添加行,以记入此答案


4
buildscript {
    **ext.kotlin_version = '1.1.1'**  //Add this line
    repositories {
        **jcenter()**                 //Add this line
        google()
    }
    dependencies {
//        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.android.tools.build:gradle:3.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        **jcenter()**                 //Add this line
        google()
        maven { url "https://jitpack.io" }
    }
}

您可以详细说明这是如何改善Mihail Salari的答案的,它似乎是基于此的。
Nemo

3

如果您使用的是Android Studio 3.2及更高版本,则可以通过在项目的build.gradle中添加google()和jcenter()来解决此问题:

repositories {
        google()
        jcenter()
}

2

这对我有用:使用Gradle 4.8.1

buildscript {
    ext.kotlin_version = '1.1.1' 
repositories {
    jcenter()
    google()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.1.0'}
}
allprojects {
    repositories {
        mavenLocal()
        jcenter()
        google()
        maven {
            url "$rootDir/../node_modules/react-native/android"
        }
    maven {
            url 'https://dl.bintray.com/kotlin/kotlin-dev/'
    }
  }
}   


1
  1. 请在下面的路径中检查您的Kotlin的当前版本,

    C:\ Program Files \ Android \ Android Studio \ gradle \ m2repository \ org \ jetbrains \ kotlin \ kotlin-stdlib \ 1.0.5

(1.0.5)在项目级别的gradle文件中更改为该版本。

您可以在上面的路径中看到未提及任何jre versionJava-,因此请在应用级别的gradle文件中删除以下内容,

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

1

build.gradle(项目)

buildScript {
    ...
    dependencies {
        ...
        classpath 'com.android.tools.build:gradle:4.0.0-rc01'
    }
} 

gradle / wrapper / gradle-wrapper.properties

...
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

一些库要求更新的gradle。如:

androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines"

GL


0

如果(传递)依赖项仍使用jreKotlin库的jdk变体,则可以在解析策略的帮助下强制使用该变体:

configurations.all {
    resolutionStrategy {
        eachDependency { DependencyResolveDetails details ->
            details.requested.with {
                if (group == "org.jetbrains.kotlin" && name.startsWith("kotlin-stdlib-jre")) {
                    details.useTarget(group: group, name: name.replace("jre", "jdk"), version: version)
                    details.because("Force use of 'kotlin-stdlib-jdk' in favor of deprecated 'kotlin-stdlib-jre'.")
                }
            }
        }
    }
}

0

简单步骤:

  1. 单击文件>项目结构

  2. 单击依赖关系>查找并单击org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21(或当前版本是什么)

  3. 在“详细信息”>“更新”部分下,单击[更新变量] [更新依赖项]

  4. 点击确定

最好的祝福


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.