【问题标题】:kotlin fun main(args : Array<String>) doesn't work in command linekotlin fun main(args : Array<String>) 在命令行中不起作用
【发布时间】:2019-04-26 08:49:34
【问题描述】:

在我刚安装的 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


    【解决方案1】:

    从例外情况来看,您的 jar 不包含 Kotlin 标准库。您需要稍微修改您的构建。

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

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

    附:这个错误很常见,与main函数关系不大。尝试谷歌搜索错误消息。

    【讨论】:

    • ...但是这无法解释为什么没有参数的main 确实有效...除了...那里有一些标准库,但现在不行了?
    • @Roland 确实如此,如果您查看 Intrinsics (github.com/JetBrains/kotlin/blob/master/libraries/stdlib/jvm/…) 有很多检查,可能会跳过它 main 没有参数,因此 main 没有运行而没有 stdlib
    • 很可能是一旦在函数声明中遇到了Array或String类型,它就试图在stdlib中查找,却找不到stdlib。
    • 在升级到最新的 IDEA 和 Kotlin 之前,compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8" 会自动添加,一切正常。但在最新版本中,仅添加了implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"。手动添加包含 stdlib 作品的 kotlin-stdlib-jdk8。
    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    相关资源
    最近更新 更多