2012-12-19 10 views
5

単純なScalaクラスを構築するためにsbtを使用すると、いくつかの奇妙な問題が発生します。 コードは、私は桟橋サーバを起動するために、インターネットからコピーしただけで十分です:SBTを使用したスカラービルドでJavaクラスをインポートできないのですか?

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とScalaの2.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) 

私が見ることができます私は、この問題のファイルを削除し、コンテナでのJettyサーバを実行する場合

"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")) 

:build.sbtで、私のような依存関係を持っているSBTから始める、それは何の問題を実行していません!

+0

これは見知らぬものにするために、Eclipse/Scala-IDEでコンパイルしてうまく動作します – Wudong

+0

あなたのsbtクラスパスにjettyがありますか? –

+0

ビルドファイルに依存しているjettyはありますか? –

答えて

3

変更この行:

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

へ:

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

は、問題を解決しました。

sbt「コンテナ」クラスをコンパイルクラスパスに入れないでください。Eclipseではそれは気にしません。

+1

私はsbtを終了してもう一度実行しなければなりませんでした。ありがとう!今働いている – kirhgoff

0

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

libraryDependencies ++= Seq(
    "org.eclipse.jetty" % "jetty-server" % "8.1.7.v20120910", 
    "org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" 
) 
+0

私の編集したポストを参照してください。 – Wudong

+0

あなたの依存関係はまだ間違っています。あなたのビルドのものを私の答えのものに置き換えてみてください。 –

+1

正確に間違っていますか?違いを説明できますか?私は同じ問題があります – kirhgoff

関連する問題