导入语句:错误:在Scala REPL中找不到

时间:2015-11-12 05:00:24

标签: scala sbt

我是scala的新手。我创建了一个包含几个方法的scala对象。我试图从Scala REPL调用该方法,但import语句不起作用。

这是我尝试的代码(它位于default package):

object Hello extends App {

    def sum(xs: List[Int]): Int = 0;

    def max(xs: List[Int]): Int = 0;

}

为了启动Scala REPL,我打开了控制台,然后执行了以下操作:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\user>sbt
[info] Set current project to user (in build file:/C:/Users/user/)
> console
[info] Updating {file:/C:/Users/user/}user...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Starting scala interpreter...
[info]
Welcome to Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_2
2).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import Hello._
<console>:7: error: not found: value Hello
       import Hello._
              ^

scala>

项目工作区和项目在E:/Work中创建。即使我尝试导航到项目,然后按照上面的相同步骤进行操作,但它也会出现同样的错误。

请告诉我如何使此import声明从Scala REPL开始。

2 个答案:

答案 0 :(得分:2)

有关项目结构,请参阅this page

你的目录树应该是

E:
|
`- Work
   |
   `- {PROJECT}
      |
      +- build.sbt
      |
      `- src
         |
         `- main
            |
            `- scala
               |
               `- Hello.scala

接下来导航到E:\Work\{Project},然后运行sbt,然后console并完成所有工作

请记住,您的REPL将引用在console执行之前编译的类。

请注意,您的项目结构可能更简单,如

E:
|
`- Work
   |
   `- {PROJECT}
      |
      `- Hello.scala

但不建议这样做

答案 1 :(得分:0)

您需要编译您的项目

退出scala REPL,然后从shell提示符退出:

> sbt clean compile package
编译任务是对 sbt 的依赖,因此 sbt sbt compile 相同,但是我没有在控制台输出中看到一行显示它编译了你的项目(它将以编译开头)

或者,如果您没有依赖项(看起来您没有),那么您可以直接将该代码粘贴到REPL会话中,让Scala REPL为您编译代码,如下所示:

scala> :paste
// paste your code in the REPL window
scala> ctrl-D