为什么我不能执行scala文件?

时间:2012-09-13 04:22:51

标签: scala

我是Scala的新手,这是我第一次运行Scala,当我安装Scala时,我创建了一个名为Hello.scala的文件,内容为:

println("HelloWorld!")

当我输入scala时,没有问题,显示了scala REPL,但是当我输入scala Hello.scala时,它提示:

<console>:1: error: ';' expected but '.' is found.

我不知道是什么问题,我希望有人可以帮助我。

9 个答案:

答案 0 :(得分:19)

答案 1 :(得分:15)

要在REPL中执行外部脚本(从中加载所有定义),请使用:load <filepath>命令而不是scala <filepath>

» echo 'println("HelloWorld")' > Hello.scala
» scala
Welcome to Scala version 2.9.2 (OpenJDK Client VM, Java 1.6.0_24).
Type in expressions to have them evaluated.
Type :help for more information.

// is this what you tried to do?
scala> scala Hello.scala
<console>:1: error: ';' expected but '.' found.
   scala Hello.scala

// do this instead
scala> :load Hello.scala
Loading Hello.scala...
HelloWorld

scala>

答案 2 :(得分:9)

您的文件Hello.scala是一个脚本。您应该可以使用scala Hello.scala从命令提示符运行它。

$ scala Hello.scala 
HelloWorld!

另一方面,REPL不用于运行脚本。它用于直接运行scala代码:

scala> println("HelloWorld!")
"HelloWorld!"

答案 3 :(得分:2)

如果你在scala REPL中执行它。你应该使用如下

:load [scala file path]

输出如下

  

定义了“objectname”

然后调用main方法作为下一个命令

objectname.main(Array())

请参阅以下网址以获取更多详细信息

https://www.scala-lang.org/documentation/getting-started.html

答案 4 :(得分:1)

只是我所知道的摘要。我曾经对如何正确运行scala文件感到困惑。

总而言之,我们有三种方法可以实现这一目标:

  1. 对于脚本文件。对于脚本,这意味着它与您在REPL中键入语句行一样,或使用:paste模式粘贴多行。类似的东西:

      

    的println( “foo” 的)

  2. 使用scalac编译包含main方法的对象。您可以extends应用特征轻松实现。

      

    def main(args:Array [String]):单位

  3. 你可能会说“你这个骗子,只有两种方式”。但对于第二个问题,我认为还有很多方法可以让它运行起来。

    1. scala -howtorun:object ObjectName -cp "./"-cp仅用于保险。
    2. java -cp "/path/to/your/scala-jars" ObjectName:所以不同之处仅在于需要包含类路径。

答案 5 :(得分:1)

如果您使用的是Unix,可以将Scala脚本作为shell脚本运行 通过在文件顶部添加 pound bang 指令。

例如,在名为helloarg的文件中键入以下内容:

#!/bin/sh
exec scala "$0" "$@"
!#
// Say hello to the first argument
println("Hello, "+ args(0) +"!")

初始#!/bin/sh必须是文件中的第一行 设置执行权限后:

$ chmod +x helloarg

您可以通过简单地说:

将Scala脚本作为shell脚本运行
$ ./helloarg globe

如果您使用的是Windows,则可以通过命名来实现相同的效果 文件helloarg.bat并将其放在脚本的顶部:

::#!
@echo off
call scala % 0 % *
goto :eof
::!#

答案 6 :(得分:1)

在主函数中写println语句:

object HelloWorld {   
 def main(args: Array[String]) {   
   println("Hello World!")   
 }   
}

然后执行:scala -nc HelloWorld.scala

答案 7 :(得分:0)

这适用于mac进行开发。

#!/usr/bin/env scala -nc
println("hello");

答案 8 :(得分:0)

当您尝试运行scala时,请按照以下步骤操作:

  1. 不要打开scala REPL
  2. 使用cmd提示中的scala <filename.scala><Input if any>
  3. 下面是

    示例:

    scala /home/prakash/Desktop/babyname.scala < /home/prakash/Desktop/ND

    注意:以上命令必须在unix cmd提示符中键入,而不是在scala repl中。