我是Scala的新手,这是我第一次运行Scala,当我安装Scala时,我创建了一个名为Hello.scala
的文件,内容为:
println("HelloWorld!")
当我输入scala
时,没有问题,显示了scala REPL,但是当我输入scala Hello.scala
时,它提示:
<console>:1: error: ';' expected but '.' is found.
我不知道是什么问题,我希望有人可以帮助我。
答案 0 :(得分:19)
添加-nc
标志节省了我的一天。
scala -nc Hello.scala
什么是-nc
?
-nc no compilation daemon: do not use the fsc offline compiler
什么是fsc offline compiler
?
fsc – Fast offline compiler for the Scala 2 language
来源:http://www.scala-lang.org/old/sites/default/files/linuxsoft_archives/docu/files/tools/fsc.html
答案 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文件感到困惑。
总而言之,我们有三种方法可以实现这一目标:
对于脚本文件。对于脚本,这意味着它与您在REPL中键入语句行一样,或使用:paste
模式粘贴多行。类似的东西:
的println( “foo” 的)
使用scalac
编译包含main方法的对象。您可以extends
应用特征轻松实现。
def main(args:Array [String]):单位
你可能会说“你这个骗子,只有两种方式”。但对于第二个问题,我认为还有很多方法可以让它运行起来。
scala -howtorun:object ObjectName -cp "./"
:-cp
仅用于保险。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时,请按照以下步骤操作:
scala <filename.scala><Input if any>
示例:
scala /home/prakash/Desktop/babyname.scala < /home/prakash/Desktop/ND
注意:以上命令必须在unix cmd提示符中键入,而不是在scala repl中。