2011-10-04 50 views
2

我试图用xsbt-web-plugin使用SBT。 其次在项目网站上的说明,但继续得到以下(对于长度抱歉)sbt,码头和类路径

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. 

这里是我的配置: 在项目/ 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" 

这里是我的版本。 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 :_*) 

任何帮助将不胜感激!

+1

也许你需要包括jetty? val jettyServer =“org.eclipse.jetty”%“jetty-server”%“8.0.1.v20110908” – schmmd

+0

添加此依赖关系会产生相同的错误 –

+0

我也切换到使用基本配置 –

回答

3

看起来插件的作者错过了在文档的Usage部分中添加Jetty依赖项。但是,如果你在Running Lift看,你会看到,码头是一个需要外部的依赖:

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

将依赖项添加到项目依赖项产生同样的错误。 –

0

这个问题实际上涉及到码头必须依赖和码头8事实并非但支持。

最终的配置是这样的:

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-webapp" % "7.3.0.v20110203" % "jetty" // For Jetty 7 
) 

seq(webSettings :_*) 

感谢您的帮助。

0

尝试将所有lib和main类复制到jar/war的根目录,并将classpath设置为lib/*。确保lib包含所有的码头罐。这对我有效=>

java -cp myway;“lib/*”mainpackage.main