kotlin fun main(args:Array <string>)在命令行中不起作用

时间:2019-04-26 08:49:35

标签: kotlin

在我刚刚安装的Kotlin 1.3.30中,主输入功能在命令行中不起作用。 JDK是版本8。Intellij Idea是2019.1.1。没有依赖性,非常干净的项目。

当我开始学习Kotlin时,主要条目是“ fun main(args:Array)”。去年,可以在不使用“ args”的情况下使用“ fun main()”,而我经常使用它。 现在我有一个项目需要命令行参数,但是出了点问题。我尝试了3种格式:

// 1. doesn't work.
fun main(vararg args: String){
    println("this is a test.")
}

// 2. doesn't work
fun main(args: Array<String>){
    println("this is a test.")
}

// 3. this works. but where can I get the command line parameters?
fun main(){
    println("this is a test.")
}

1&2具有相同的响应:

λ java -jar test-1.0-SNAPSHOT.jar
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
        at com.yxy.ProgramFileKt.main(ProgramFile.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more

它在不更改任何其他值的情况下可以与3正常工作。但是我需要命令行参数。

1 个答案:

答案 0 :(得分:3)

从异常情况判断,您的jar不包含Kotlin stdlib。您需要稍微修改一下构建。

将类似这样的内容添加到您的Gradle构建中应该可以解决该问题:

dependencies {
  compile "org.jetbrains.kotlin:kotlin-stdlib:1.2.0"
}

P.S。此错误非常常见,与main函数无关。尝试使用Google搜索错误消息。