我正在尝试使用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构建文件中,或者我是否遗漏了其他内容?
答案 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