无法在命令行上运行Kotlin程序

时间:2019-06-28 11:18:52

标签: kotlin cmd

我已经下载了kotlin编译器1.2.21 zip文件,将其解压缩到C:\ Program files \,并且还在系统PATH变量中添加了bin文件夹。我已经安装并配置了JDK。

我编写了一个简单程序,将其保存为C:\ USERS \ USER \,名称为args.kts,并使用以下命令在cmd中运行它:kts args.kts Hello

但是我每次都会收到此错误:

exception: java.lang.ArrayIndexOutOfBoundsException: Index 11052 out of bounds for length 11052
        at org.jetbrains.org.objectweb.asm.ClassReader.readUnsignedShort(ClassReader.java:2464)
        at org.jetbrains.org.objectweb.asm.ClassReader.readUTF8(ClassReader.java:2525)
        at org.jetbrains.org.objectweb.asm.ClassReader.readModule(ClassReader.java:761)
        at org.jetbrains.org.objectweb.asm.ClassReader.accept(ClassReader.java:646)
        at org.jetbrains.org.objectweb.asm.ClassReader.accept(ClassReader.java:507)
        at org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleInfo$Companion.read(JavaModuleInfo.kt:67)                                                       at org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder.findSystemModule(CliJavaModuleFinder.kt:44)
        at org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder.access$findSystemModule(CliJavaModuleFinder.kt:25)
        at org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder$systemModules$1.invoke(CliJavaModuleFinder.kt:37)
        at org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder$systemModules$1.invoke(CliJavaModuleFinder.kt:25)                                         at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:149)                          at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:109)
        at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:133)
        at kotlin.sequences.FlatteningSequence$iterator$1.ensureItemIterator(Sequences.kt:254)
        at kotlin.sequences.FlatteningSequence$iterator$1.hasNext(Sequences.kt:241)
        at kotlin.sequences.SequencesKt___SequencesKt.none(_Sequences.kt:1239)
        at org.jetbrains.kotlin.cli.jvm.compiler.ClasspathRootsResolver.addModularRoots(ClasspathRootsResolver.kt:227)
        at org.jetbrains.kotlin.cli.jvm.compiler.ClasspathRootsResolver.computeRoots(ClasspathRootsResolver.kt:124)
        at org.jetbrains.kotlin.cli.jvm.compiler.ClasspathRootsResolver.convertClasspathRoots(ClasspathRootsResolver.kt:79)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:230)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:114)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:409)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(K2JVMCompiler.kt:286)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createEnvironmentWithScriptingSupport(K2JVMCompiler.kt:276)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:170)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:63)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:109)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:53)
        at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:92)
        at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:70)
        at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:36)
        at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(CLITool.kt:157)
        at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMain(CLITool.kt:148)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler$Companion.main(K2JVMCompiler.kt:343)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.main(K2JVMCompiler.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.preloading.Preloader.run(Preloader.java:81)
        at org.jetbrains.kotlin.preloading.Preloader.main(Preloader.java:43)

仅供参考,我关注了这个网站:http://otfried.org/courses/cs109/project-install.html

这是我在上述站点提供的 args.kts 文件中的代码:

println("Your arguments are:")

for (i in 0 until args.size) {
  println("$i: ${args[i]}")
}

请告诉我该怎么做。

2 个答案:

答案 0 :(得分:0)

我按照“手动安装”中的说明进行操作 在Working with the Command Line Compiler处。

如果您需要Kotlin REPL,请安装Kotlin 1.3.31-1.3.40 crashes

在我的Lubuntu 16.04 LTS上工作完美。 我没有Windows可以尝试。抱歉。 但这是JetBrains的教程。他们应该知道。 此外,您可以在此处找到更多他们的文档和教程。 祝你好运,学习愉快!

答案 1 :(得分:0)

我认为[Benjamin Charais](https://stackoverflow.com/users/7729375/benjamin-charais)是正确的。

有args.size参数。所以你的循环应该是:

对于(i in 0直到(args.size-1)){...

对不起,我之前浪费了你的时间。