首页 > 解决方案 > kotlin fun main(args : 数组) 在命令行中不起作用

问题描述

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

当我开始学习 Kotlin 时,主要条目是 'fun main(args: Array)'。去年,'fun main()' 可以在没有 'args' 的情况下使用,我经常使用它。现在我有一个项目需要命令行参数,但是出了点问题。我尝试了 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 一起正常工作,而无需更改任何其他内容。但我需要命令行参数。

标签: kotlin

解决方案


从异常来看,您的 jar 不包含 Kotlin 标准库。您需要稍微修改您的构建。

在你的 Gradle 构建中添加这样的东西应该可以解决它:

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

PS这个错误很常见,和功能关系不大main。尝试谷歌搜索错误消息。


推荐阅读