0

我正在尝试使用 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 'sbt update compile' 的错误是:

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

我是否还必须将 scala 库添加到 sbt 构建文件中,还是我错过了其他东西?

4

2 回答 2

2

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

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

后来的 spray-util 里程碑是针对 Scala 2.10.0-RC5(基于pom)编译的,这在技术上应该可以工作。

于 2013-05-23T20:00:11.847 回答
0

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

于 2013-05-24T17:40:47.297 回答