2015-10-11 34 views
0

运行的HelloWorld的Scala程序中,我有我的第一个Scala的计划,这很简单,只要:无法在Ubuntu

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

然后我尝试编译它,如下所示:

$ scalac HelloWorld.scala 

而且它编译时没有任何错误信息。然而当我试图像这样运行:

$ scala HelloWorld 

我得到一个错误信息:

在classpath中没有这样的文件或类:HelloWorld的

要实现这一点,我也跟着this教程和解决出现的错误,我遵循this的建议。但是,

$ scala objects.HelloWorld 

也不起作用。我知道很多人现在会开始大量投票回答我的问题并提出问题 - 你是否曾尝试阅读过一些书籍(是的,我曾经阅读过霍斯特曼的初学者书籍,但它没有包含任何关于编译的信息在Ubuntu下的程序)。不过,我希望有人能够帮助。

+0

这个问题http://stackoverflow.com/questions/3191489/scala-problem-how-to-run-a-program-that-is-in-a-package建议尝试将当前目录添加到classpath。尽管我在ubuntu上的stdout上完成了你所列出的内容,并得到了'Hello world!'。 –

+1

也适用于我。也许你可以试试:'scala -cp。 HelloWorld' – Madoc

+0

@Madoc。当我做'scala -cp。 HelloWorld',我发现它编译并随即运行。尽管如此,我认为这似乎是行得通的,从长远来看,这不是我所需要的。 – Jacobian

回答

2

(这是之前评论,我把它改写到一个响应。)

你所做的一切都是正确的,除了最后一步:使用而不是scala命令java命令。

scala是Scala REPL。 Scala代码不需要单独的运行命令,因为它编译为常规的Java字节码。

所以尝试:java HelloWorld

对于更复杂的程序,使用Scala库。但是,你需要包含在类路径中的Scala运行时库。所以,从长远来看,正如@roterl在评论中指出的那样,使用像SBT这样的工具是受益者。

2

回答说scala命令仅用于REPL是不正确的。您可以从scalahttp://www.scala-lang.org/files/archive/nightly/docs-2.10.2/manual/html/scala.html)的手册页条目中看到,打算以与java命令相同的方式使用该命令,并增加了运行REPL,脚本或编译应用程序的灵活性。

正如一些评论所指出的,这几乎肯定是一个路径问题,这意味着它需要更多的信息来诊断。您可以检查的一件事是scalac命令是否在当前目录中生成了.class文件。如果那是在您运行scala的目录中,那么在类路径中需要.的注释几乎肯定是正确的。