2012-05-09 3 views
5

У меня есть проект Play. К сожалению, я десериализую некоторые классы классов, которые были сериализованы с использованием scala 2.9.2. Поскольку в игре используется 2.9.1, есть InvalidClassException.Использование scala 2.9.2 с Play?

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

Можно ли заставить игру использовать scala 2.9.2? Конфигурация проекта воспроизведения, похоже, делает много волшебства. Там не так много в 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). 

ответ

1

Там нет SBT плагин для воспроизведения 2.0.4, совместимого с Scala 2.9.2, как игра 2.0.4 была построена на SBT 0.11. Икс. Играть! обновлен до Scala 2.9.2 с использованием SBT 0.12.x, и это нарушило обратную совместимость с Play 2.0.4 для использования Scala 2.9.2

Однако для Scala используется обратный порт 2.9.3. Измените scalaVersion на 2.9.3 в вашем файле сборки, чтобы использовать плагин 2.0.0 SBT.

1

вы можете изменить версию scala в sbt. Не уверен, есть ли еще плагин sbt для игры для 2.9.2.

How to change Scala version for sbt project?

+0

Я не использую конфигурацию света. Использование 'set build.scala.version 2.9.2' дает ошибку:' eof ожидаемый, но двойной литерал найден .' – schmmd

+0

вам нужно разделить настройки с пустой строкой – user847988

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" 
    ) 
} 
+0

Действительно ли это работает? Я пытаюсь прямо сейчас, но я получаю «нерешенные зависимости» # play_2.9.2; 2.0.2: не найден – Andrea

+1

Нет, это не так. Причина в том, что нет никакой сборки scala-2.9.2 для Play в maven (за исключением моментальных снимков 2.10). Два варианта: выполнить компиляцию самостоятельно или подать отчет об ошибке, чтобы они обеспечивали такую ​​сборку. – jsalvata

+1

Я только что подал такой отчет об ошибке - посмотрим, как получится: https://play.lighthouseapp.com/projects/82401-play-20/tickets/837 – jsalvata