为啥 sbt 在成功解析 scalacheck 后会给出“object scalacheck is not a member of package org”?

Posted

技术标签:

【中文标题】为啥 sbt 在成功解析 scalacheck 后会给出“object scalacheck is not a member of package org”?【英文标题】:Why does sbt give "object scalacheck is not a member of package org" after successful scalacheck resolve?为什么 sbt 在成功解析 scalacheck 后会给出“object scalacheck is not a member of package org”? 【发布时间】:2012-11-15 00:01:22 【问题描述】:

我在build.sbt中添加了以下内容:

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
      ^  

这可能是什么原因?

有没有办法查看 sbt 在compile 任务期间使用的类路径?

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

请注意,该项目在 ScalaIDE 中构建良好。 (我使用 sbteclipse 生成 eclipse .classpath 文件。生成的 .classpath 具有正确的 scalacheck 条目。)

【问题讨论】:

【参考方案1】:

您导入依赖项的方式使 Scalacheck 仅可用于命令 test

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

你应该使用:

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

但是你为什么在测试以外的地方使用 Scalacheck 呢?有关在 sbt 中进行测试的更多说明,请参阅 this link。

【讨论】:

另外注意:使用test:compile 编译src/main/test 中的内容。这个版本会找到标记为... % "test"的依赖项 谢谢!现在可以了。我正在编写的一些generatorsshrink 方法非常重要。因此,我将此代码与 src 中的类实现一起保留。

以上是关于为啥 sbt 在成功解析 scalacheck 后会给出“object scalacheck is not a member of package org”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 SBT 解析 SNAPSHOT 版本?

为啥在 Play 2.3 项目中 sbt 编译后 sbt 失败并显示 NoClassDefFoundError: play/Play$ in Play 2.2.x 项目?

为啥 SBT 的 Scala (2.10) 不包含 Akka?

IntelliJ 在创建 Scala 项目后在 build.sbt 中给出“无法解析符号”的错误

SBT中已发布的程序集包中的未解析依赖项

Scalacheck,大小为 5 到 12 的列表生成器