kotlin - 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 一起正常工作,而无需更改任何其他内容。但我需要命令行参数。
解决方案
从异常来看,您的 jar 不包含 Kotlin 标准库。您需要稍微修改您的构建。
在你的 Gradle 构建中添加这样的东西应该可以解决它:
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.2.0"
}
PS这个错误很常见,和功能关系不大main
。尝试谷歌搜索错误消息。
推荐阅读
- c# - 从另一个线程调用时不会触发操作
- c# - 在 asp.net 网络表单中注册后,如何通过电子邮件从 sql 数据库向用户发送自动生成的 ID
- r - 在 ddply/dlply 中嵌套 nlm 函数
- java - 连接到 AWS 海王星
- amazon-web-services - AWS 是否根据传入请求的数量或会话的持续时间收费?
- android - 如何在单个文本视图中为特定文本和点击侦听器设置颜色
- ruby-on-rails - React 与 Ruby on Rails 的集成。
- visual-studio - VS2017 15.7.5 不会自动检出文件
- jquery - jQuery onchange 函数不适用于动态生成的选择标签
- python - 使用脚本扩展 CMake 是一种好习惯吗?