非相干scala库版本

非相干scala库版本,scala,Scala,我有一个导致执行错误的警告: [info] Set current project to calculator (in build file:/home/guillaume/projects/scala/2/) [info] Updating {file:/home/guillaume/projects/scala/2/}root... [info] Resolving org.fusesource.jansi#jansi;1.4 ... [info] Done updating. [warn]

我有一个导致执行错误的警告:

[info] Set current project to calculator (in build file:/home/guillaume/projects/scala/2/)
[info] Updating {file:/home/guillaume/projects/scala/2/}root...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[warn] Scala version was updated by one of library dependencies:
[warn]  * org.scala-lang:scala-library:2.10.5 -> 2.11.1
[warn] To force scalaVersion, add the following:
[warn]  ivyScala := ivyScala.value map { _.copy(overrideScalaVersion = true) }
[warn] Run 'evicted' to see detailed eviction warnings
[info] Compiling 3 Scala sources to /home/guillaume/projects/scala/2/target/scala-2.10/classes...
[success] Total time: 9 s, completed Apr 5, 2016 12:16:04 AM
这很奇怪,因为我的scala版本>2.11:

$ scala -version
Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL
$sbt sbtVesion
[info] 0.13.9
My build.sbt:

lazy val root = (project in file(".")).
  settings(
    name := "calculator",
    libraryDependencies += "jline" % "jline" % "2.12",
    libraryDependencies += "com.typesafe.akka" % "akka-actor_2.11" % "2.3.4"
  )

我只是不明白为什么我的scala库过时了。

SBT构建使用的scala版本由SBT配置决定,而不是由系统scala版本决定。SBT 0.13的默认Scala版本为2.10,但您可以在
build.SBT
中使用以下设置进行更改:

scalaVersion := "2.11.8"
SBT项目的Scala版本并不依赖于您的系统Scala版本(如果有)这一事实实际上非常方便,这意味着您可以拥有跨多个Scala版本的项目,您可以在未安装Scala的机器上构建项目,等等

另一个注意事项是,通过对Scala依赖项使用
%%
语法来避免这种不匹配是一个好主意,例如:

libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.3.4"
与此相反:

libraryDependencies += "com.typesafe.akka" % "akka-actor_2.11" % "2.3.4"

工件名称前的
%%
表示“使用此名称,但为当前配置的Scala版本添加
.

谢谢,添加
scalaVersion
解决了我的问题。但是将
%%
添加到我的
库依赖项中
会添加另一个警告:
jline#jline_2.11;2.12:未找到
com.typesafe.akka#akka-actor_2.11_2.11;2.3.4:未找到
。但是如果没有
%%
,程序就可以完美运行!有两个问题:JLine不是Scala库,因此您不需要双
%%
\u 2.11
-您的原始版本是正确的。对于Akka,您只需要其中一个,因为它们表达相同的东西。我建议使用
%%
版本。和
corss交叉版本。full
对于需要完整版本的依赖项非常方便,如
ammonite repl
@TravisBrown谢谢!