如何在命令行中使用scala?

时间:2014-03-15 13:38:48

标签: scala

我运行Windows 7。

我有java(当前运行scala的足够版本)和scala在我的计算机上下载。我已经设置了PATH,这样当我在命令提示符下键入“scala”时,它会将我发送到正确的界面:

欢迎使用Scala版本2.9.1.final(Java HotSpot(TM)64位服务器VM,Java 1.7.0_51) 输入表达式以对其进行评估。 键入:帮助以获取更多信息

但是我无法在我的测试文件上执行“scala”或“scalac”命令。

scala> scala Hello
(console):8: error: object Hello is not a member of package scala

这让我觉得我在错误的目录中。 Hello.scala文件保存在我将PATH设置为的主目录中。

但是当我尝试编译代码时,我遇到了另一个问题。

scala> scalac Hello.scala
(console):1: error: ';' expected but '.' found.

我实际上让我的测试文件在某一点上工作......但我实际上并不是IN scala。

C:\scala-2.9.1.final\bin> scala Hello.scala
Hello world!

我不确定如何从这里开始。如果有人对可能出现的问题有任何想法,我将非常感谢您的投入。

2 个答案:

答案 0 :(得分:4)

看起来你正试图跑步&从Scala REPL (read-evaluate-print循环 - 一种Scala解释器)中编译程序,你不能在REPL中这样做。 REPL允许您键入Scala语句并立即执行它们。 (如果您不确定如何输入REPL,则可能只是从命令行输入了命令scala。)REPL对于测试想法和使用Scala进行实验非常有用。例如:

C:\some\path> scala
Welcome to Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_91).
Type in expressions for evaluation. Or try :help.

scala> println ("Hello!")
Hello!

scala> val x = 10
x: Int = 10

scala> val y = x * 5
y: Int = 50

scala> sys.exit
C:\some\path>

然而,REPL并不是你用来编译的东西。运行Scala程序 - 您需要从命令行(或从 sbt 等工具)执行此操作。如果你想直接从命令行运行你的程序,而不使用REPL(也就是说,你没有使用Scala中的 ),那么你需要执行以下操作:

首先,使用 scalac 编译您的程序:

C:\some\path> scalac Hello.scala

如果成功,则可以使用 scala 命令(查找Hello.class文件)运行程序:

C:\some\path> scala Hello

(此处C:\some\path是文件Hello.scala& Hello.class的位置。)

或者,正如您已经发现的那样,您可以将Scala程序作为REPL中的脚本运行。您可以从命令行执行以下操作(请注意在.scala之后添加文件类型Hello与上面的命令相比):

C:\some\path> scala Hello.scala

或来自REPL:

scala> :load Hello.scala

希望这有帮助!

答案 1 :(得分:1)

当您在REPL中时,您不必发出scala命令。如果要从该文件执行代码,请加载它:

这是我在Foo.scala中所拥有的

println("I'm foo") 

现在我开始使用REPL(正如您所看到的那样scala>表示您已经成为REPL并且可以开始执行原始scala代码):

Welcome to Scala version 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> :load Foo.scala
Loading Foo.scala...
I'm foo