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 の用語 [error] を参照しています。[エラー] 現在のクラスパスから完全に欠落しているか、[エラー] クラスパスのバージョンが [エラー] package.class のコンパイル時に使用されたバージョンと互換性がない可能性があります。[エラー] シンボリック参照が正しくありません。package.class の署名は、利用できないパッケージ akka.dispatch のタイプ Future [error] を参照しています。[エラー] 現在のクラスパスから完全に欠落しているか、[エラー] クラスパスのバージョンが [エラー] package.class のコンパイル時に使用されたバージョンと互換性がない可能性があります。[エラー] 2 つのエラーが見つかりました [エラー] (コンパイル:コンパイル) コンパイルに失敗しました

scala ライブラリを sbt ビルド ファイルにも追加する必要がありますか、それとも他に何か不足していますか?

4

2 に答える 2

2

tld;dr: 1.0-M3 を 1.1-M7 に置き換えてみてください

使用しているスプレー アーティファクトは、Scala 2.10 とのバイナリ互換性がない Scala 2.9.2 に対してコンパイルされたようです。通常、Scala アーティファクトには、アーティファクト名に Scala バイナリ バージョンが含まれています。これは、メジャーな Scala バージョンにバイナリ互換性がないためです。

その後、spray-util のマイルストーンが Scala 2.10.0-RC5 ( pomに基づく) に対してコンパイルされましたが、これは技術的には機能するはずです。

于 2013-05-23T20:00:11.847 に答える