5

sbtを使用して単純なScalaクラスを構築すると、奇妙な問題が発生しました。桟橋サーバーを起動するためにインターネットからコピーしたコードで十分です。

object JettyEmbedded {

  def main(args: Array[String]) {
    val server = new org.eclipse.jetty.server.Server(9080)
    val context= new org.eclipse.jetty.webapp.WebAppContext()

    context.setServer(server)
    context.setContextPath("/");
    context.setWar("src/main/webapp")
    server.setHandler(context);

    try {
      server.start()
      server.join()
    } catch {
      case e: Exception => {
        e.printStackTrace()
        System.exit(1)
      }
    }
  }
}

SBTとscala2.9.2でコンパイルすると、次のエラーが発生しました。

[error] /src/main/scala/JettyEmbedded.scala:4: object eclipse is not a member of package org
[error] val server = new org.eclipse.jetty.server.Server(9080)

build.sbtで確認できますが、次のような依存関係があります。

"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container",
"org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar"))

この問題のあるファイルを削除し、container:start from sbtを使用してJettyサーバーを実行すると、問題なく実行されます。

4

2 に答える 2

4

この行を変更します。

"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container",

に:

"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container;provided",

問題を解決しました。

sbt は「コンテナ」クラスをコンパイル クラスパスに入れませんが、Eclipse では気にしません。

于 2013-01-04T10:37:20.817 に答える
0

build.sbtファイルに適切な桟橋の依存関係がないようです。

libraryDependencies ++= Seq(
  "org.eclipse.jetty" % "jetty-server" % "8.1.7.v20120910",
  "org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910"
)
于 2012-12-19T15:20:09.183 に答える