在我刚刚安装的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正常工作。但是我需要命令行参数。
答案 0 :(得分:3)
从异常情况判断,您的jar不包含Kotlin stdlib。您需要稍微修改一下构建。
将类似这样的内容添加到您的Gradle构建中应该可以解决该问题:
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.2.0"
}
P.S。此错误非常常见,与main
函数无关。尝试使用Google搜索错误消息。