【问题标题】:java.lang.NoClassDefFoundError: org/eclipse/jetty/plus/webapp/PlusConfigurationjava.lang.NoClassDefFoundError: org/eclipse/jetty/plus/webapp/PlusConfiguration
【发布时间】:2014-07-21 22:44:23
【问题描述】:

我按照Scalatra docs 的教程进行操作,安装了 Consript 和 Giter8,并按照描述使用 g8 初始化了项目。但是,当我无法使用 container:start 启动 Jetty 容器时,出现以下异常:

[error] (container:start) java.lang.NoClassDefFoundError: org/eclipse/jetty/plus/webapp/PlusConfiguration

我没有对 Giter 生成的项目进行任何更改。 javajavac 可执行文件的版本是 1.7.0_65 (Sun)。

这些是来自build.scala 的库依赖项:

  libraryDependencies ++= Seq(
    "org.scalatra" %% "scalatra" % ScalatraVersion,
    "org.scalatra" %% "scalatra-scalate" % ScalatraVersion,
    "org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test",
    "ch.qos.logback" % "logback-classic" % "1.0.6" % "runtime",
    "org.eclipse.jetty" % "jetty-webapp" % "9.1.3.v20140225" % "container",
    "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar"))
  )

【问题讨论】:

    标签: jetty scalatra scalatra-sbt


    【解决方案1】:

    我也遇到了同样的问题,花了几个小时才找到解决方法。但什么结果都没有。 :( 所以我必须查看 Scalatra 模板。

    https://github.com/scalatra/scalatra-sbt.g8,几天前有一些修改过的build.scala。 the version of "jetty-webapp" was changed from "8.1.8.v20121106" to "9.1.3.v20140225".

    然后我在项目的 build.scala 文件中将 jetty-webapp 的版本修改为以前的版本,并且应用程序运行良好。 :)

    我会针对这个问题提出问题。

    祝你好运。

    已添加 > 现在修补的模板和 container:start 工作正常。 :)

    【讨论】:

    • 其实这个答案很完美。首先,很高兴看到我不是唯一遇到同样问题的人——即使有一个可行的解决方案,这也是我现在所需要的。谢谢ACodFarmer! :-)
    【解决方案2】:

    对于 scalatra 2.3.0,它是这样的:

    "org.eclipse.jetty" % "jetty-webapp" % "9.1.5.v20140505" % "container",
    "org.eclipse.jetty" % "jetty-plus" % "9.1.5.v20140505" % "container",
    "javax.servlet" % "javax.servlet-api" % "3.1.0"
    

    【讨论】: