Scala sbt jar允许在命令行上传递类路径时导入,但不能在REPL中传递

时间:2015-05-28 21:15:16

标签: scala sbt

我用Scala和SBT建造了一个小测试罐。如果我将classpath参数放在Scala REPL命令行上,它会完美地导入包。但是,如果我进入shell然后添加类路径,它将无法识别导入。作为Scala的新手,这让我感到困惑,所以我希望有人可以解释。我会尝试提供足够的信息而不会过分。

scala -cp configparser_2.10-1.0.jar 
Welcome to Scala version 2.10.4 (OpenJDK 64-Bit Server VM, Java 1.7.0_75).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import com.oaktreepeak.util._
import com.oaktreepeak.util._

scala> val c = new OakConfig()
c: com.oaktreepeak.util.OakConfig = com.oaktreepeak.util.OakConfig@58d9a418

现在我等待并在shell中加载类路径到jar:

scala 
Welcome to Scala version 2.10.4 (OpenJDK 64-Bit Server VM, Java 1.7.0_75).
Type in expressions to have them evaluated.
Type :help for more information.

scala> :cp configparser_2.10-1.0.jar
Added '/home/*****/Dyn/projects/DynECT2/scala/common/ConfigParser/test-configs/configparser_2.10-1.0.jar'.  Your new classpath is:
".:/home/*****/Dyn/projects/DynECT2/scala/common/ConfigParser/test-configs/configparser_2.10-1.0.jar"
Nothing to replay.

scala> import com.oaktreepeak.util._
<console>:7: error: object oaktreepeak is not a member of package com
   import com.oaktreepeak.util._
              ^

scala> 

这是我的build.sbt文件:

name := "ConfigParser"

version := "1.0"

scalaVersion := "2.10.4"

organization := "com.oaktreepeak"

单个Scala源文件:

package com.oaktreepeak.util

import scala.io._
import scala.util.parsing.json._

class OakConfig {
    var iRollupAfter: Int = -1;
    def Load(sPath: String) {
        val config = Source.fromFile(sPath).mkString
        val json:Option[Any] =JSON.parseFull(config)
        val map:Map[String,Any] = json.get.asInstanceOf[Map[String, Any]]
        iRollupAfter = map.get("RollupAfter").get.asInstanceOf[Double].toInt
    }
}

任何人都有任何想法或解释?

由于

1 个答案:

答案 0 :(得分:4)

在Scala 2.10中,

:cp已被破坏,并已在Scala 2.11中替换为(工作):require

如果您是Scala的新用户,我建议您使用最新的稳定版Scala,目前版本为2.11.6。

另外,作为您对Scala的新手,如果您想从sbt中的REPL(这是一个很棒的工作流程)中的项目中尝试,只需运行console,这将编译您的代码并为您提供REPL的所有Scala类,您的项目类以及所有依赖项的类!无需手动输入REPL类路径。