玩! 2.1要我写scala代码

时间:2013-03-18 11:16:49

标签: java scala playframework playframework-2.1

我希望这是我在迁移到Play时遇到的最后一个错误! 2.1。

我的所有控制器都使用compile命令返回错误。

return ok(createOrUpdate.render(Secured.getConnectedUser(), getCustomers(), User.build(user)));

[error]   required: User,scala.collection.immutable.List<User>,User
[error]   found: User,java.util.List<User>,<null>

我不明白为什么玩! 2.1希望我使用scala api而不是java api。

这是我的build.scala文件:

import sbt._
import Keys._
import PlayProject._

object ApplicationBuild extends Build {

    val appName         = "webapp-stativiz"
    val appVersion      = "1.0-SNAPSHOT"

    val appDependencies = Seq(
      javaCore,
      javaJdbc,
      javaEbean,
      "org.mongodb" % "mongo-java-driver" % "2.10.1",
      "pdf" % "pdf_2.9.1" % "0.3",
      "commons-io" % "commons-io" % "1.3.2",
      "commons-codec" % "commons-codec" % "1.7"
    )

    val main = play.Project(appName, appVersion, appDependencies, mainLang = JAVA).settings(
          resolvers += Resolver.url("My GitHub Play Repository", url("http://www.joergviola.de/releases/"))(Resolver.ivyStylePatterns) 
    )

}

编辑:

使用run命令我有这个例外:

sbt.PlayExceptions$CompilationException: Compilation error[error: method render in class createOrUpdate cannot be applied to given types;]
        at sbt.PlayReloader$$anon$2$$anonfun$reload$2$$anonfun$apply$15$$anonfun$apply$16.apply(PlayReloader.scala:349) ~[na:na]
        at sbt.PlayReloader$$anon$2$$anonfun$reload$2$$anonfun$apply$15$$anonfun$apply$16.apply(PlayReloader.scala:349) ~[na:na]
        at scala.Option.map(Option.scala:133) ~[scala-library.jar:na]
        at sbt.PlayReloader$$anon$2$$anonfun$reload$2$$anonfun$apply$15.apply(PlayReloader.scala:349) ~[na:na]
        at sbt.PlayReloader$$anon$2$$anonfun$reload$2$$anonfun$apply$15.apply(PlayReloader.scala:346) ~[na:na]
        at scala.Option.map(Option.scala:133) ~[scala-library.jar:na]

解决方案:

删除您的项目。创建一个新的。

3 个答案:

答案 0 :(得分:1)

Play中不再需要

mainLang = JAVA! 2.1:依赖java*足以让Play玩!识别您的主要应用程序语言。

你文件的其余部分似乎是正确的。尝试运行play clean clean-all compile以使其正常工作。

答案 1 :(得分:1)

scala应该处理从java列表到scala列表的类型转换。 所以我认为您可能正在查看列表类型而不是null类型user。 以下语句中的最后一个字段是否返回null?

return ok(createOrUpdate.render(Secured.getConnectedUser(), getCustomers(), User.build(user)));

[error]   required: User,scala.collection.immutable.List<User>,User
[error]   found: User,java.util.List<User>,<null>

答案 2 :(得分:0)

解决方案是:

  1. 创建新项目
  2. 将您的文件放入(app,public ...文件夹)
  3. 删除旧项目
  4. 所以......那叫做迁移吗?玩! 2.1是我见过的最糟糕的版本:(