Scala Play抛出RuntimeException:java.lang.ExceptionInInitializerError

Scala Play抛出RuntimeException:java.lang.ExceptionInInitializerError,scala,playframework,Scala,Playframework,我有以下播放控制器: package controllers import models.{Page, DB} import play.api._ import play.api.data.Form import play.api.data.Forms._ import play.api.libs.json.Json import play.api.mvc._ class Application extends Controller { def index = Action {

我有以下播放控制器:

package controllers

import models.{Page, DB}
import play.api._
import play.api.data.Form
import play.api.data.Forms._
import play.api.libs.json.Json
import play.api.mvc._

class Application extends Controller {

  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }

  val pageForm: Form[Page] = Form {
    mapping (
      "url" -> text
    )(Page.apply)(Page.unapply)
  }

  def addPage = Action { implicit request =>
    val page = pageForm.bindFromRequest.get
    DB.save(page)
    Redirect(routes.Application.index)
  }

  def getPages = Action {
    val page = DB.query[Page].fetch
    Ok(Json.toJson(page))
  }
}
此控制器访问此模型:

package models

import java.net.URL

import play.api.libs.json.Json

case class Page(url: String) {
  var content: String = new URL(url).getContent().toString;
}

object Page {
  implicit val personFormat = Json.format[Page]
}
并存储在数据库中,如下所示:

package models

import sorm._

object DB extends Instance(entities = Seq(Entity[Page]()), url="jdbc:h2:mem:test")
 <form action="@routes.Application.addPage" method="post">
        <input name="url" type="text">
        <button>Add Page</button>
    </form>
我从UI创建模型的新实例,如下所示:

package models

import sorm._

object DB extends Instance(entities = Seq(Entity[Page]()), url="jdbc:h2:mem:test")
 <form action="@routes.Application.addPage" method="post">
        <input name="url" type="text">
        <button>Add Page</button>
    </form>
我的
build.sbt
文件:

name := """ScalaWeb"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayScala)

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
  jdbc,
  cache,
  ws,
  specs2 % Test
)

libraryDependencies ++= Seq(
  "org.sorm-framework" % "sorm" % "0.3.19",
  "org.scala-lang" % "scala-compiler" % scalaVersion.value force(),
  "com.h2database" % "h2" % "1.3.148"
)

resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"

// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
routesGenerator := InjectedRoutesGenerator

scalacOptions += "-Ylog-classpath"

错误消息不是很具有描述性。此代码有什么问题?

请向我们展示您的
版本。sbt
可能您忘记添加h2依赖项:

val appDependencies = Seq(
  "org.sorm-framework" % "sorm" % "0.3.118",
  "com.h2database" % "h2" % "1.3.168"
)

并使用名称
Db
代替
Db
。Big
DB
是play数据库API的一部分

请发布完整的堆栈跟踪。我添加了完整的堆栈跟踪。你有没有设法解决这个问题?事实上,h2依赖项并不存在。现在我已经添加了它(你可以在我更新的帖子中看到),但是同样的错误消息出现了。