尝试为Kotlin协同程序运行一些示例,但无法构建我的项目。我使用的是最新的gradle版本- 4.1
有什么建议要检查/修复吗?
这里是build.gradle
buildscript {
ext.kotlin_version = '1.1.4-3'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
apply plugin: 'application'
kotlin {
repositories {
jcenter()
}
experimental {
coroutines 'enable'
}
dependencies {
compile "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.18"
}
}
和main.kt
之间的关系
fun main(args: Array<String>) {
launch (CommonPool) {
delay(1000L)
println("World!")
}
println("Hello, ")
Thread.sleep(2000L)
}
当我运行gradle compileKotlin
时,我得到以下结果
e: /Users/philippgrigoryev/projects/kotlin-coroutines/src/main/kotlin/main.kt: (2, 5): Unresolved reference: launch
e: /Users/philippgrigoryev/projects/kotlin-coroutines/src/main/kotlin/main.kt: (2, 13): Unresolved reference: CommonPool
e: /Users/philippgrigoryev/projects/kotlin-coroutines/src/main/kotlin/main.kt: (3, 9): Unresolved reference: delay`
8条答案
按热度按时间mwg9r5ms1#
Launch不再直接使用。Kotlin documentation建议使用:
arknldoa2#
如果您使用的是Coroutines 1.0+,则导入不再是
导入kotlinx.coroutines.experimental.*
但是,
导入kotlinx.协同程序.启动
在build.gradle的依赖项闭包中,您需要以下内容(对于Coroutines 1.0.1):
kr98yfug3#
就像在评论中已经回答的那样,
kotlinx.coroutines.experimental.*
包缺少导入。如果你喜欢的话,你可以看看我在GitHub的例子。rbl8hiat4#
这让我困惑了一段时间,因为我正在做的教程显示它是直接使用的...我认为他们已经改变了它是如何使用从以前的版本。
我认为诀窍在于您只能在Coroutine作用域中调用launch()。
所以这是行不通的:
适用范围:
code snippit example
gwo2fgha5#
试着这样,
//将此行添加到gradle
lztngnrs6#
我正在使用
GlobalScope.launch
代替launch
工作。以下是进口:
2fjabf4q7#
我在使用kotlinx-corontine-core库时遇到了这个问题,下面是我的gradle,
那么launch和许多其他来自Kotlin协程的引用就找不到了。下面是我解决这个问题的过程,
首先,在Android Studio下找到最终的依赖项。我很惊讶地发现最终的Kotlin协程库是1.5.0,它应该是空的!
1.3.9也包括在内,但1.5.0更大。因此,最终将使用1.5.0。
然后我尝试通过以下命令找出项目依赖项,
其中“aap”是项目模块名称。
然后我发现它的
lifecycle-viewmodel-ktx
使用它。所以,我试着把这个库升级到一个更高的版本,1.6.0。然后,我发现它现在不是空的,每个引用都能正常工作。
所以,要解决这个问题,你需要,
1.查找您在项目中使用的Kotlin协程核心库的版本
1.调查库中发生了什么,它是1.5.0还是空?
1.查找此版本的引入者
1.尝试升级到更新版本
nfzehxib8#
试试这个