Я просто пытаюсь следовать инструкциям на этой странице , в которых указано, что нужно выполнить следующий код:
import kotlinx.coroutines.*
fun main() {
GlobalScope.launch { // launch new coroutine in background and continue
delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
println("World!") // print after delay
}
println("Hello,") // main thread continues while coroutine is delayed
Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}
У меня есть этот код в файле на my-kotlin-library / SRC / Главный / Kotlin / coroutines.kt.Это мой build.gradle, расположенный в корневом каталоге my-kotlin-library:
plugins {
kotlin("jvm") version "1.3.21"
}
repositories {
jcenter()
}
dependencies {
implementation(kotlin("stdlib"))
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1")
testImplementation("junit:junit:4.12")
}
Я могу собрать с gradle build
, который производит следующие артефакты (только отображающие соответствующие):
build
├── classes
│ └── kotlin
│ └── main
│ ├── CoroutinesKt$main$1.class
│ ├── CoroutinesKt.class
│ └── META-INF
│ └── my-kotlin-library.kotlin_module
└── libs
└── my-kotlin-library.jar
Нет ошибок сборки, но когда я пытаюсь запустить его, я получаю NoClassDefFoundError
:
$ kotlin -cp build/libs/my-kotlin-library.jar CoroutinesKt
Exception in thread "main" java.lang.NoClassDefFoundError: kotlinx/coroutines/GlobalScope
at CoroutinesKt.main(coroutines.kt:4)
at CoroutinesKt.main(coroutines.kt)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.jetbrains.kotlin.runner.AbstractRunner.run(runners.kt:61)
at org.jetbrains.kotlin.runner.Main.run(Main.kt:109)
at org.jetbrains.kotlin.runner.Main.main(Main.kt:119)
Caused by: java.lang.ClassNotFoundException: kotlinx.coroutines.GlobalScope
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 9 more
Я нашел файл jar сопрограммы и попытался включить его также в путь к классам:
$ kotlin -cp ~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.1.1/3d2b7321cdef9ebf9cb7729ea4f75a6f6457df86/kotlinx-coroutines-core-1.1.1.jar:build/libs/my-kotlin-library.jar CoroutinesKt
К сожалению, это привело к той же ошибке.У меня должно быть что-то настроено неправильно, но я не могу найти хороший пример сборки и запуска с использованием сопрограмм вне Android Studio или IntelliJ IDEA.