2012-11-27 51 views
5

我加入以下的build.sbt爲什麼在成功執行scalacheck解決之後,sbt給出「對象scalacheck不是包org的成員」?

libraryDependencies <<= scalaVersion { scala_version => Seq(
<other entries> 
    "org.scalacheck" %% "scalacheck" % "1.10.0" % "test", 
    <other entries> 
) 
} 

compile在SBT項目,依賴被成功解析爲可以在日誌中可以看出:

[info] Resolving org.scalacheck#scalacheck_2.9.1;1.10.0 ... 
... 
Done updating 

不過,我得到以下編譯一個文件時出錯。

object scalacheck is not a member of package org 
import org.scalacheck.Gen 
    ^ 

這是什麼原因?

有沒有辦法在compile任務中看到sbt正在使用的類路徑?

Sbt version: 0.11.2 
OS: Windows 7 
Scala version: 2.9.1 

請注意,該項目在ScalaIDE中建立良好。 (我用sbteclipse產生日食.classpath文件生成.classpath有適當的scalacheck條目)。

回答

14

導入依賴使得Scalacheck僅適用於命令test方式:

"org.scalacheck" %% "scalacheck" % "1.10.0" % "test" 

你應該使用:

"org.scalacheck" %% "scalacheck" % "1.10.0" 

但是,爲什麼在測試中使用Scalacheck?請參閱this link瞭解更多有關sbt測試的解釋。

+2

另外值得注意的是:使用'test:compile'來編譯'src/main/test'中的東西。該版本將查找標有'...%「測試」' – Dylan

+0

「的依賴項,謝謝!它現在有效。我寫的一些「發生器」和「縮小」方法並不重要。因此,我將這些代碼和類實現保存在'src'中。 – dips