编译时缺少scala或akka.exe

编译时缺少scala或akka.exe,scala,dependencies,sbt,Scala,Dependencies,Sbt,我正在尝试使用Spray Servlet创建REST服务,但没有编译。 您可以在下面找到my 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" librar

我正在尝试使用Spray Servlet创建REST服务,但没有编译。 您可以在下面找到my 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更新编译”时出现的错误是:

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


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

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

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


后来,根据Scala 2.10.0-RC5(基于)编译了spray util里程碑,从技术上讲,这应该是可行的

解决方法是使用所有相同的spray版本(1.1-M7)并升级到Scala 2.10.1

为不同的模块使用相同版本的spray,并且您不需要akka依赖项,因为spray应该自动将其拉入。这有帮助吗?你能分享你项目的全部来源吗?这可能是一个bug。您只需要声明spray servlet,以及spray中的spray路由。您还必须包括akka actor(正如您所做的),因为它仅在spray中声明为“提供”。如果您仍然有问题,也可以向spray用户邮件列表询问。