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
。BigDB
是play数据库API的一部分 请发布完整的堆栈跟踪。我添加了完整的堆栈跟踪。你有没有设法解决这个问题?事实上,h2依赖项并不存在。现在我已经添加了它(你可以在我更新的帖子中看到),但是同样的错误消息出现了。