我运行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!
我不确定如何从这里开始。如果有人对可能出现的问题有任何想法,我将非常感谢您的投入。
答案 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