scala Either和akka.dispatch编译时未来丢失

时间:2013-05-23 16:18:41

标签: scala dependencies sbt

我正在尝试使用Spray Servlet创建REST服务,但不编译。 您可以在下面找到我的build.sbt:

name := "someservice"

version := "0.0.1"

scalaVersion := "2.10.0"

resolvers += "spray repo" at "http://repo.spray.io"

libraryDependencies += "io.spray" % "spray-servlet" % "1.0-M3"

libraryDependencies ++= Seq(
  "io.spray"            %   "spray-servlet" % "1.0-M3",
  "io.spray"            %   "spray-util"    % "1.0-M3",
  "io.spray"            %   "spray-http"    % "1.1-M7",
  "com.typesafe.akka"   %%  "akka-actor"    % "2.1.0",
  "org.specs2"          %%  "specs2"        % "1.13" % "test",
  "org.eclipse.jetty.orbit" %   "javax.servlet"  % "3.0.0.v201112011016" artifacts Artifact("javax.servlet", "jar", "jar")
 )

出现错误我得到了com'bt update compile'是:

  

[错误]错误的符号引用。 package.class中的签名是指术语Either   包scala中的[error]无法使用。   [error]当前类路径或版本可能完全丢失   [error]类路径可能与编译时使用的版本不兼容   [error] package.class。   [错误]不好的符号引用。 package.class中的签名指的是Future类型   包akka.dispatch中的[error]不可用。   [error]当前类路径或版本可能完全丢失   [error]类路径可能与使用时的版本不兼容   [error]编译package.class。   [错误]发现两个错误   [错误]   (编译:​​编译)编译失败

我是否必须将scala库添加到sbt构建文件中,或者我是否遗漏了其他内容?

2 个答案:

答案 0 :(得分:2)

tld; dr:尝试用1.1-M7替换1.0-M3

看起来你正在使用的Spray工件是针对Scala 2.9.2编译的,Scala 2.9.2与Scala 2.10不是二进制兼容的。通常,Scala工件在工件名称中包含Scala二进制版本,正是因为主要的Scala版本不是二进制兼容的。

后来的spact-util里程碑是根据Scala 2.10.0-RC5(基于pom)编译的,技术上应该可行。

答案 1 :(得分:0)

使用所有相同的喷雾版本(1.1-M7)解决并升级到Scala 2.10.1