Scala 2.12.10中继承App的Main类main方法无输出求助
Scala 2.12.10中
extends App无输出问题的解决办法 你的问题根源在于**extends App的机制和自定义main方法的冲突**:
当Scala对象继承App特质时,Scala会自动生成符合JVM标准的main(args: Array[String])方法,用来执行对象体内的初始化代码。但你自己定义的def main(): Unit方法签名不符合规范,而且App特质的逻辑不会调用这个自定义方法,导致里面的println代码根本没机会执行,自然看不到输出。
两种解决办法:
方法一:保留extends App,移除自定义main方法
直接把代码写在对象体内,App特质会自动执行这些初始化代码:
package example object Main extends App { println("here") val ages: Seq[Int] = Seq(42, 61, 29, 64) println("here ") println(s"The oldest person is ${ages.max}") }
方法二:不使用App特质,定义标准main方法
去掉extends App,自己实现符合JVM规范的main方法(必须带args: Array[String]参数):
package example object Main { def main(args: Array[String]): Unit = { println("here") val ages: Seq[Int] = Seq(42, 61, 29, 64) println("here ") println(s"The oldest person is ${ages.max}") } }
你之前尝试的Console.out.flush没用,本质是因为代码根本没被执行,所以无论怎么flush都不会有输出。
内容的提问来源于stack exchange,提问作者Ken Myers
相关产品推荐
相关产品推荐

