【发布时间】:2020-03-20 01:35:47
【问题描述】:
我正在 IntelliJ Idea IDE 上开发一个使用 kotlinx 协程的 Kotlin 桌面应用程序。
这是我的 build.gradle 文件:
plugins {
id 'application'
id 'org.jetbrains.kotlin.jvm' version '1.3.60'
}
mainClassName = 'MainKt'
group 'my_group_name'
version '1.01'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
// Coroutines
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
jar {
manifest {
attributes 'Main-Class': 'MainKt'
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
通过 IDE 运行项目时一切正常,但是当我生成 .jar 工件并通过java -jar file.jar 运行它时,使用协程类时会引发以下异常:
Exception in thread "Thread-2" java.lang.NoClassDefFoundError: kotlinx/coroutines/GlobalScope
Caused by: java.lang.ClassNotFoundException: kotlinx.coroutines.GlobalScope
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
在生成的 .jar 工件上运行 java -jar file.jar 时,为什么 Kotlinx 协程不起作用?
【问题讨论】:
标签: java intellij-idea kotlin coroutine kotlin-coroutines