我正在观察一个有趣的行为。我有一个现有项目,在其中创建一个文件夹并在该文件夹中创建了一个Scala
脚本。要运行它,我做了
有趣的是,如果脚本如下,则会出现错误Scala script not found
object HelloWorld{
def main(args:Array[String]): Unit ={
println("hello world");
}
}
但是如果脚本是
def greetings(): Unit ={
println("hello")
}
greetings();
然后它起作用了!
为什么IntelliJ
无法运行脚本的第一个版本?
答案 0 :(得分:2)
您可以执行以下操作:
作为脚本运行。 您必须使用以下代码:
class HelloWorld {
def main(args:Array[String]): Unit ={
println("hello world");
}
}
object Foo extends HelloWorld
Foo.main(args)
提示:我从“启动前”中删除了“生成”操作,以进一步显示警告。
作为应用程序运行。 您可以保留您的代码。创建配置时只需选择“应用程序”。
object HelloWorld{
def main(args:Array[String]): Unit ={
println("hello world");
}
}
为什么?
您必须提供脚本的入口点。因此,您可以使用以下代码:
object HelloWorld {
def main(args:Array[String]): Unit ={
println("hello world");
}
}
HelloWorld.main(args) //without this line, Script is not found!
但这会产生错误(预期的类或对象定义):
如果您尝试从应用特征中扩展,则会收到2条警告:
object HelloWorld extends App {
override def main(args:Array[String]): Unit ={
println("hello world");
}
}
HelloWorld.main(args)
因此,我想最好使用上述两个解决方案之一。