sbt给了我两个scala反射罐

sbt给了我两个scala反射罐,scala,classpath,sbt,Scala,Classpath,Sbt,在一个项目中进行了一些依赖项更新之后,我以某种方式结束了sbt clean update,在lib\u managed中留下了两个scala reflect版本: scala-reflect-2.10.0.jar scala-reflect-2.10.2.jar 因此,我在编译时收到了这样一条可爱的信息: [error] bad symbolic reference. A signature in package.class refers to term tools [error] in pa

在一个项目中进行了一些依赖项更新之后,我以某种方式结束了
sbt clean update
,在
lib\u managed
中留下了两个
scala reflect
版本:

scala-reflect-2.10.0.jar
scala-reflect-2.10.2.jar
因此,我在编译时收到了这样一条可爱的信息:

[error] bad symbolic reference. A signature in package.class refers to term tools
[error] in package scala which is not available.
[error] It may be completely missing from the current classpath, or the version on
[error] the classpath might be incompatible with the version used when compiling 
        package.class.
sbt版本为0.13.0

我如何解决这个问题


我有一种感觉,下面的条目是负责的:

sbt不再覆盖依赖项中的Scala版本。这允许独立配置依赖于不同的Scala版本,并将Scala库以外的Scala依赖项视为正常依赖项。但是,对于其他Scala库,它可能会导致除Scalaversation之外的已解析版本


但我仍然完全不清楚这意味着什么以及应该如何处理。

一个库的多个版本在lib_managed/中不是一个bug,因为它只是一个项目本地缓存,提供了与同一台机器上其他项目更多的隔离。如果一个类路径上有多个版本,这将是一个问题。那么,你能用类路径来重新表述这个问题吗?看起来类路径上的scala reflect版本是错误的。这方面的信息会有所帮助。谢谢我今天在另一个项目中再次遇到这个问题。我可以用sbt 0.12.4编译项目,但不能用sbt 0.13.0;如果对象工具不是包scala的成员,则会失败。混合scala reflect现在是2.10.1而不是2.10.3。最后一个问题通过使用
exclude
删除第二个scala reflect,并再次显式添加scala编译器作为依赖项来解决。似乎0.13忘记了可传递的scala编译器依赖关系。