使用Scala 2.9.2与Play框架?

5

我有一个Play项目。不幸的是,我正在反序列化一些使用scala 2.9.2序列化的case类。由于play使用2.9.1,因此会出现InvalidClassException。

Caused by: java.io.InvalidClassException: scala.Option; local class incompatible: stream classdesc serialVersionUID = 2832403187243187948, local class serialVersionUID = 7113474029577970182

是否可以强制使用scala 2.9.2来运行play?Play项目配置似乎在做很多神奇的事情。 projects/Build.scala 中没有太多内容。

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

object ApplicationBuild extends Build {
    val appName         = "myproj"
    val appVersion      = "1.0-SNAPSHOT"
}

自从2.9.2与2.9.1二进制兼容以来,我应该能够强制使用它 - 但我不知道如何做到!更新:将scala 2.9.2添加为依赖项会导致以下错误。
[error] {file:/home/schmmd/repo/openie-demo/}openiedemo/*:update: Version specified for dependency org.scala-lang#scala-lang;2.9.2 differs from Scala version in project (2.9.1).
3个回答

7

尝试更新你的 Build.scala 文件。

object ApplicationBuild extends Build {

    val appDependencies = Seq(
       // Add your project dependencies here,
       "org.scala-lang" % "scala-compiler" % "2.9.2",
      ...
    )

    val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).setting(
      // Add your own project settings here
      scalaVersion := "2.9.2"
    )
}

这真的能行吗?我正在尝试,但是我得到了“未解决的依赖关系play#play_2.9.2;2.0.2:未找到”的错误信息。 - Andrea
1
不是这样的。原因是在maven中没有scala-2.9.2版本的Play构建(除了play 2.10快照版)。有两个选择:自己编译Play或者提交错误报告以便他们提供这样的构建。 - jsalvata
1
我刚刚提交了这样一个错误报告——让我们看看它的结果:https://play.lighthouseapp.com/projects/82401-play-20/tickets/837 - jsalvata

1

我没有使用轻量级配置。使用 set build.scala.version 2.9.2 会出现错误:eof expected but double literal found. - schmmd
你需要用空行分隔设置。 - user847988

1

Play 2.0.4没有适用于Scala 2.9.2的sbt插件,因为play 2.0.4是基于SBT 0.11.x构建的。Play!使用SBT 0.12.x升级到Scala 2.9.2,这破坏了Play 2.0.4向后兼容使用Scala 2.9.2的能力。

然而,有一个针对Scala 2.9.3的后移版本。在您的Build文件中将scalaVersion更改为2.9.3,以使用play 2.0.4 SBT插件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接