2

这个应该很简单,但我自己想不通。

我在 Ubuntu 12.04 系统上安装了 Scala 2.9.1。

该文件是helloworld.scala

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

scalac helloworld 完全没有问题。然后scala HelloWorld给出

Exception in thread "main" java.lang.RuntimeException: Cannot figure out how to run target: HelloWorld
    at scala.sys.package$.error(package.scala:27)
    at scala.tools.nsc.GenericRunnerCommand.scala$tools$nsc$GenericRunnerCommand$$guessHowToRun(GenericRunnerCommand.scala:38)
    at scala.tools.nsc.GenericRunnerCommand$$anonfun$2.apply(GenericRunnerCommand.scala:48)
    at scala.tools.nsc.GenericRunnerCommand$$anonfun$2.apply(GenericRunnerCommand.scala:48)
    at scala.Option.getOrElse(Option.scala:108)
    at scala.tools.nsc.GenericRunnerCommand.<init>(GenericRunnerCommand.scala:48)
    at scala.tools.nsc.GenericRunnerCommand.<init>(GenericRunnerCommand.scala:17)
    at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:33)
    at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89)
    at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

我在论坛上多次看到这个问题,但发帖者通常只是混合类名和文件名,所以他们会尝试 scala helloworld,这不是我正在做的(对吗?)但我得到了同样的错误.

编辑

scala -classpath ./ HelloWorld工作正常。所以这是一个类路径问题。

4

3 回答 3

3

我试过了,结果完全一样。然后我清除了我的类路径:

$ CLASSPATH=

一切正常。

于 2012-08-21T10:56:57.763 回答
1

我也在使用 Ubuntu 并使用您的示例进行测试,我可以确认:

scala HelloWorld.scala

将作为 Scala 脚本成功运行该文件。和:

scalac HelloWorld.scala

将创建类文件。

但是,运行:

scala HelloWorld.class

会给出你得到的错误。

但是,如果您正在运行

scala HelloWorld

在包含类文件的目录中,程序应该可以正常执行。

于 2012-08-21T11:59:18.090 回答
1

不是你问的,但由于你有很多依赖项,最好使用 sbt 并让它担心类路径。

于 2012-08-21T21:02:37.227 回答