I'm trying to use the SBT with the xsbt-web-plugin. Followed the instructions on the projects website but continue to get the following (sorry for the length)
sbt.JettyRunException: Jetty and its dependencies must be on the jetty classpath
at sbt.JettyRunner.runError(WebApp.scala:72)
at sbt.JettyRunner.apply(WebApp.scala:62)
at com.github.siasia.WebPlugin$.jettyRunAction(WebPlugin.scala:129)
at com.github.siasia.WebPlugin$$anonfun$jettyRunAction$1.apply(WebPlugin.scala:133)
at com.github.siasia.WebPlugin$$anonfun$jettyRunAction$1.apply(WebPlugin.scala:133)
at com.github.siasia.WebPlugin$.withCurrentRef(WebPlugin.scala:138)
at com.github.siasia.WebPlugin$.jettyRunAction(WebPlugin.scala:133)
at com.github.siasia.WebPlugin$$anonfun$10.apply(WebPlugin.scala:141)
at com.github.siasia.WebPlugin$$anonfun$10.apply(WebPlugin.scala:141)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:33)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:33)
at sbt.Command$.process(Command.scala:91)
at sbt.MainLoop$$anonfun$next$1$$anonfun$apply$1.apply(Main.scala:86)
at sbt.MainLoop$$anonfun$next$1$$anonfun$apply$1.apply(Main.scala:86)
at sbt.State$$anon$1.process(State.scala:60)
at sbt.MainLoop$$anonfun$next$1.apply(Main.scala:86)
at sbt.MainLoop$$anonfun$next$1.apply(Main.scala:86)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:13)
at sbt.MainLoop$.next(Main.scala:86)
at sbt.MainLoop$.run(Main.scala:81)
at sbt.MainLoop$$anonfun$runLogged$1.apply(Main.scala:75)
at sbt.MainLoop$$anonfun$runLogged$1.apply(Main.scala:72)
at sbt.Using.apply(Using.scala:25)
at sbt.MainLoop$.runLogged(Main.scala:72)
at sbt.MainLoop$.runLogged(Main.scala:62)
at sbt.xMain.run(Main.scala:33)
at xsbt.boot.Launch$.run(Launch.scala:54)
at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:43)
at xsbt.boot.Launch$.launch(Launch.scala:68)
at xsbt.boot.Launch$.apply(Launch.scala:14)
at xsbt.boot.Boot$.runImpl(Boot.scala:24)
at xsbt.boot.Boot$.main(Boot.scala:15)
at xsbt.boot.Boot.main(Boot.scala)
Caused by: java.lang.NoClassDefFoundError: org/eclipse/jetty/webapp/WebAppClassLoader
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at sbt.ModuleUtilities$.getObject(ModuleUtilities.scala:10)
at sbt.JettyRunner.createRunner$1(WebApp.scala:45)
at sbt.JettyRunner.runJetty$1(WebApp.scala:47)
at sbt.JettyRunner.apply(WebApp.scala:57)
at com.github.siasia.WebPlugin$.jettyRunAction(WebPlugin.scala:129)
at com.github.siasia.WebPlugin$$anonfun$jettyRunAction$1.apply(WebPlugin.scala:133)
at com.github.siasia.WebPlugin$$anonfun$jettyRunAction$1.apply(WebPlugin.scala:133)
at com.github.siasia.WebPlugin$.withCurrentRef(WebPlugin.scala:138)
at com.github.siasia.WebPlugin$.jettyRunAction(WebPlugin.scala:133)
at com.github.siasia.WebPlugin$$anonfun$10.apply(WebPlugin.scala:141)
at com.github.siasia.WebPlugin$$anonfun$10.apply(WebPlugin.scala:141)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:33)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:33)
at sbt.Command$.process(Command.scala:91)
at sbt.MainLoop$$anonfun$next$1$$anonfun$apply$1.apply(Main.scala:86)
at sbt.MainLoop$$anonfun$next$1$$anonfun$apply$1.apply(Main.scala:86)
at sbt.State$$anon$1.process(State.scala:60)
at sbt.MainLoop$$anonfun$next$1.apply(Main.scala:86)
at sbt.MainLoop$$anonfun$next$1.apply(Main.scala:86)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:13)
at sbt.MainLoop$.next(Main.scala:86)
at sbt.MainLoop$.run(Main.scala:81)
at sbt.MainLoop$$anonfun$runLogged$1.apply(Main.scala:75)
at sbt.MainLoop$$anonfun$runLogged$1.apply(Main.scala:72)
at sbt.Using.apply(Using.scala:25)
at sbt.MainLoop$.runLogged(Main.scala:72)
at sbt.MainLoop$.runLogged(Main.scala:62)
at sbt.xMain.run(Main.scala:33)
at xsbt.boot.Launch$.run(Launch.scala:54)
at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:43)
at xsbt.boot.Launch$.launch(Launch.scala:68)
at xsbt.boot.Launch$.apply(Launch.scala:14)
at xsbt.boot.Boot$.runImpl(Boot.scala:24)
at xsbt.boot.Boot$.main(Boot.scala:15)
at xsbt.boot.Boot.main(Boot.scala)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.webapp.WebAppClassLoader
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at sbt.classpath.DualLoader.loadClass(DualLoader.scala:29)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at sbt.classpath.LazyFrameworkLoader.doLoadClass(ClassLoaders.scala:122)
at sbt.classpath.LoaderBase.loadClass(ClassLoaders.scala:21)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at sbt.ModuleUtilities$.getObject(ModuleUtilities.scala:10)
at sbt.JettyRunner.createRunner$1(WebApp.scala:45)
at sbt.JettyRunner.runJetty$1(WebApp.scala:47)
at sbt.JettyRunner.apply(WebApp.scala:57)
at com.github.siasia.WebPlugin$.jettyRunAction(WebPlugin.scala:129)
at com.github.siasia.WebPlugin$$anonfun$jettyRunAction$1.apply(WebPlugin.scala:133)
at com.github.siasia.WebPlugin$$anonfun$jettyRunAction$1.apply(WebPlugin.scala:133)
at com.github.siasia.WebPlugin$.withCurrentRef(WebPlugin.scala:138)
at com.github.siasia.WebPlugin$.jettyRunAction(WebPlugin.scala:133)
at com.github.siasia.WebPlugin$$anonfun$10.apply(WebPlugin.scala:141)
at com.github.siasia.WebPlugin$$anonfun$10.apply(WebPlugin.scala:141)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:33)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:33)
at sbt.Command$.process(Command.scala:91)
at sbt.MainLoop$$anonfun$next$1$$anonfun$apply$1.apply(Main.scala:86)
at sbt.MainLoop$$anonfun$next$1$$anonfun$apply$1.apply(Main.scala:86)
at sbt.State$$anon$1.process(State.scala:60)
at sbt.MainLoop$$anonfun$next$1.apply(Main.scala:86)
at sbt.MainLoop$$anonfun$next$1.apply(Main.scala:86)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:13)
at sbt.MainLoop$.next(Main.scala:86)
at sbt.MainLoop$.run(Main.scala:81)
at sbt.MainLoop$$anonfun$runLogged$1.apply(Main.scala:75)
at sbt.MainLoop$$anonfun$runLogged$1.apply(Main.scala:72)
at sbt.Using.apply(Using.scala:25)
at sbt.MainLoop$.runLogged(Main.scala:72)
at sbt.MainLoop$.runLogged(Main.scala:62)
at sbt.xMain.run(Main.scala:33)
at xsbt.boot.Launch$.run(Launch.scala:54)
at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:43)
at xsbt.boot.Launch$.launch(Launch.scala:68)
at xsbt.boot.Launch$.apply(Launch.scala:14)
at xsbt.boot.Boot$.runImpl(Boot.scala:24)
at xsbt.boot.Boot$.main(Boot.scala:15)
at xsbt.boot.Boot.main(Boot.scala)
[error] sbt.JettyRunException: Jetty and its dependencies must be on the jetty classpath
[error] Use 'last' for the full log.
Here's my config: In project/plugins.sbt:
resolvers += "Web plugin repo" at "http://siasia.github.com/maven2"
addSbtPlugin("com.github.siasia" %% "xsbt-web-plugin" % "0.1.2")
libraryDependencies += "org.eclipse.jetty" % "jetty-server" % "8.0.1.v20110908"
Here's my build.sbt:
name := "Project Manager"
scalaVersion := "2.9.1"
resolvers += "repo.codahale.com" at "http://repo.codahale.com"
libraryDependencies ++= Seq(
"org.scalatra" %% "scalatra" % "2.0.1",
"org.scalatra" %% "scalatra-scalate" % "2.0.1",
"javax.servlet" % "servlet-api" % "2.4",
"org.slf4j" % "slf4j-simple" % "1.6.2",
"postgresql" % "postgresql" % "9.0-801.jdbc4",
"com.codahale" % "jerkson_2.9.1" % "0.4.2",
"org.eclipse.jetty" % "jetty-server" % "8.0.1.v20110908"
)
seq(webSettings :_*)
Any help would be greatly appreciated!
Looks like the author of the plugin has missed adding the Jetty dependency in the Usage section of the documentation. However, if you look in the Running Lift, you'll see that Jetty is an externally required dependency:
libraryDependencies ++= Seq(
"net.liftweb" %% "lift-webkit" % "2.3" % "compile",
"org.mortbay.jetty" % "jetty" % "6.1.22" % "jetty",
"ch.qos.logback" % "logback-classic" % "0.9.26"
)