Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';无法在Windows控制台中使用基本的Kotlin协同程序示例_Kotlin_Kotlin Coroutines - Fatal编程技术网

Can';无法在Windows控制台中使用基本的Kotlin协同程序示例

Can';无法在Windows控制台中使用基本的Kotlin协同程序示例,kotlin,kotlin-coroutines,Kotlin,Kotlin Coroutines,我在用科特林做实验。通过Android进行测试既慢又麻烦,所以我尝试只使用Windows控制台版本。这似乎没有那么好的记录 基本的hello world运行良好,因此我开始: 我使用的是Kotlin1.3.50,我下载了kotlinx-coroutines-core-1.3.0.jar,并将其直接放入我的soucre文件中 我用: kotlinc-kotlintest.kt-cp-kotlinx-coroutines-core-1.3.0.jar-包含运行时 我尝试使用: kotlin Kotl

我在用科特林做实验。通过Android进行测试既慢又麻烦,所以我尝试只使用Windows控制台版本。这似乎没有那么好的记录

基本的hello world运行良好,因此我开始:

我使用的是Kotlin1.3.50,我下载了kotlinx-coroutines-core-1.3.0.jar,并将其直接放入我的soucre文件中

我用:
kotlinc-kotlintest.kt-cp-kotlinx-coroutines-core-1.3.0.jar-包含运行时

我尝试使用:
kotlin KotlintestKt

我得到以下错误输出:

Exception in thread "main" java.lang.NoClassDefFoundError: kotlinx/coroutines/GlobalScope
        at KotlintestKt.main(kotlintest.kt:4)
        at KotlintestKt.main(kotlintest.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:567)
        at org.jetbrains.kotlin.runner.AbstractRunner.run(runners.kt:61)
        at org.jetbrains.kotlin.runner.Main.run(Main.kt:110)
        at org.jetbrains.kotlin.runner.Main.main(Main.kt:120)
Caused by: java.lang.ClassNotFoundException: kotlinx.coroutines.GlobalScope
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:436)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 9 more

也有类似的问题,但答案似乎只涉及Gradle或IntelliJ IDEA,我没有使用。我基本上没有Java或Kotlin方面的经验,但有几十年的编程经验。

编译器需要访问coroutines jar文件,以了解您使用的类是否存在,它们有哪些方法等,从而能够检查您的代码是否正确,并生成字节码。这就是为什么要传递
-cp-kotlinx-coroutines-core-1.3.0.jar
。类似地,在运行时,JVM需要访问协同路由jar文件才能执行类包含的代码。但在执行代码时不传递任何类路径。所以它找不到他们。所以你得到了这个例外。@JBNizet:谢谢。正如我在问题末尾提到的,我没有Java经验,我所关注的关于Windows的Kotlin文章中也没有提到过“类路径”。我看看我是否能找到答案…@AjahnCharles:现在我甚至无法编译:
警告:类路径入口指向一个不存在的位置:kotlin-coroutines-core-1.3.0.jar kotlintest.kt:4:5:错误:未解析的引用:GlobalScope
@jbniset:这似乎有效:
kotlin-cp kotlinx-coroutines-core-1.3.0.jar;。KotlintestKt
,虽然我真的不明白为什么会这样是必需的,但在我把coroutine的东西放进去之前不是。可能是因为协程库在同一个目录中??如果不指定类路径,它默认为当前目录。因此它可以找到您的类(在当前目录中),但不能找到协同路由类(不在当前目录中,但在jar文件中)。如果指定一个类路径,那么它会在指定的类路径中查找类。您需要类路径中的jar,因为您的代码使用该jar中的类,并且您需要类路径中的当前目录,因为您自己的类位于当前目录中,并且也需要找到并执行。
Exception in thread "main" java.lang.NoClassDefFoundError: kotlinx/coroutines/GlobalScope
        at KotlintestKt.main(kotlintest.kt:4)
        at KotlintestKt.main(kotlintest.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:567)
        at org.jetbrains.kotlin.runner.AbstractRunner.run(runners.kt:61)
        at org.jetbrains.kotlin.runner.Main.run(Main.kt:110)
        at org.jetbrains.kotlin.runner.Main.main(Main.kt:120)
Caused by: java.lang.ClassNotFoundException: kotlinx.coroutines.GlobalScope
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:436)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 9 more