5

我有一个 Play 项目。不幸的是,我正在反序列化一些使用 scala 2.9.2 序列化的案例类。由于 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 项目配置似乎做了很多神奇的事情。里面没有多少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).
4

3 回答 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"
    )
}
于 2012-06-02T23:26:05.457 回答
1

您可以在 sbt 中更改 scala 版本。不确定是否有 2.9.2 的 play sbt 插件。

如何更改 sbt 项目的 Scala 版本?

于 2012-05-10T03:08:05.933 回答
1

Play 2.0.4 没有与 Scala 2.9.2 兼容的 sbt 插件,因为 play 2.0.4 是基于 SBT 0.11.x 构建的。玩!使用 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 插件。

于 2013-10-16T17:56:59.867 回答