我已经设置了一个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设置肯定存在一些缺陷。
有没有人知道这里可能出现什么问题?
非常感谢您提前! 迈克尔
答案 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。