2011-08-27 69 views
1

我已經用sbt 0.10.1設置了一個webapp項目。其中一個庫依賴項是Jersey。我build.sbt文件看起來如下:SBT:library從jetty運行的類路徑中缺少的依賴項

seq(webSettings :_*) 
scalaVersion := "2.8.1" 
libraryDependencies ++= Seq(
"javax.ws.rs" % "jsr311-api" % "1.1" % "provided, jetty", 
"com.sun.jersey" % "jersey-server" % "1.9" % "provided, jetty" from "http://download.java.net/maven/2/", 
"org.eclipse.jetty" % "jetty-webapp" % "7.3.0.v20110203" % "jetty", 
"ch.qos.logback" % "logback-classic" % "0.9.26", 
"org.eclipse.jetty" % "jetty-servlet" % "7.3.0.v20110203" 
) 

在SBT控制檯我跑重裝,更新,編譯,準備-web應用,碼頭運行 - 的順序。 一切似乎都沒問題,除了碼頭運行。在那裏,我得到一個ClassNotFoundException

java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer 

這是因爲碼頭運行在新澤西州庫不會被複制到目標/ web應用/ WEB-INF/lib中/。所以我想在我的build.sbt的設置中一定有一些缺陷。

有沒有人有一個想法這裏有什麼可能是錯的?

非常感謝您提前! 邁克爾

回答

1

你有球衣的依賴,

"com.sun.jersey" % "jersey-server" % "1.9" % "provided, jetty" 
    from "http://download.java.net/maven/2/" 

但是當你檢查目錄的路徑下您所提供,

http://download.java.net/maven/2/com/sun/jersey/jersey-server/

你發現沒有1.9文件夾,但是1.9-SNAPSHOT是。我沒有嘗試過,但可能會有所幫助。

+1

的確,這是一個錯字。在此之前我曾使用過1.8版本,然後轉而使用1.9版本。 – Michael

1

事實證明build.sbt文件存在多個問題。 我有如下得到它的工作修改的文件:

libraryDependencies ++= Seq(
"javax.ws.rs" % "jsr311-api" % "1.1" % "provided, jetty", 
"com.sun.jersey" % "jersey-server" % "1.8" from "http://download.java.net/maven/2/com/sun/jersey/jersey-server/1.8/jersey-server-1.8.jar", 
"com.sun.jersey" % "jersey-core" % "1.8" from "http://download.java.net/maven/2/com/sun/jersey/jersey-core/1.8/jersey-core-1.8.jar", 
"org.eclipse.jetty" % "jetty-webapp" % "7.3.0.v20110203" % "jetty", 
"ch.qos.logback" % "logback-classic" % "0.9.26", 
"org.eclipse.jetty" % "jetty-servlet" % "7.3.0.v20110203", 
"asm" % "asm" % "3.1" 

一個需要注意的重要一點是,我不得不從球衣的依賴去掉「提供,碼頭」的一部分。否則,在運行「prepare webapp」期間,它們不會被複制到target/webapp/WEB-INF/lib。