SBT:jetty-run的类路径中缺少libraryDependencies

时间:2011-08-27 07:20:25

标签: scala jersey sbt

我已经设置了一个sbt 0.10.1的webapp项目。其中一个库依赖项是Jersey。我的build.sbt文件如下所示:

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控制台上,我按顺序运行reload,update,compile,prepare-webapp,jetty-run。 一切似乎都没问题,除了码头跑。在那里我得到一个ClassNotFoundException

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

这是因为在jetty-run期间,Jersey库不会被复制到target / webapp / WEB-INF / lib /中。所以我猜我的build.sbt设置肯定存在一些缺陷。

有没有人知道这里可能出现什么问题?

非常感谢您提前! 迈克尔

2 个答案:

答案 0 :(得分: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)

原来,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"

需要注意的一件重要事情是,我必须从球衣依赖中移除“提供的,码头”部分。否则,在“准备webapp”运行期间,它们不会被复制到target / webapp / WEB-INF / lib。