我如何修复scala-library.jar中的错误
我正在建立一个游戏!使用Play的框架应用! 2.2.1,sbt 0.13.0,我的本地版本的
scala是2.10.3.
我在反序列化我从同事继承的特定文件时遇到了一个serialVersionUID问题来处理这个项目(我不知道是谁创建了这个序列化文件(或什么时候)). 在Play中构建时出现错误消息: 引起:java.io.InvalidClassException:scala.collection.mutable.WrappedArray $ofRef;本地类不兼容:stream classdesc serialVersionUID = 8184381945838716286,本地类serialVersionUID = -8707880168089396949 经过多次搜索,我发现这个补丁应该修复错误SI-5046: https://issues.scala-lang.org/browse/SI-5046 我从github下载了分支2.10.x的scala源代码,我在这里将补丁应用到WrappedArray.scala:scala / src / library / scala / collection / mutable / WrappedArray.scala 我该怎么做这个修改过的源代码,以便我可以在我的Play中使用它!应用? *编辑#1: 我按照@Alexey Romanov的链接 我编译Play时仍然收到有关WrappedArray $ofRef的错误消息,但现在它是一个不同的错误消息.这是我做的: 我使用ant重建了scala发行版,使用: 蚂蚁构建 蚂蚁偏爱 然后在Play!我通过将以下内容添加到我的Build.scala文件中来指定用于SBT和插件的scala版本: scalaVersion:=“2.10.3” 现在我的错误信息是: 引起:java.io.InvalidClassException:scala.collection.mutable.WrappedArray $ofRef;字段位图$0的不兼容类型 ?编辑#2: 我正在向下移动Scala版本,当我到达2.9.2时,通过应用补丁修复了有关WrappedArray $ofRef的错误.现在我收到另一个类的另一个序列化错误: java.io.InvalidClassException:scala.Symbol;本地类不兼容:stream classdesc serialVersionUID = -3681772905693662441,本地类serialVersionUID = 7747205442425187939 我将向下移动到Scala 2.9.1,看看我是否可以使用该版本获取该文件的内容. *编辑#3: 在scala版本2.9.1-1中,我得到一个不同的序列化错误: 不知道接下来要尝试什么..继续下去scala版本,还是有其他建议? 解决方法
To use a local Scala installation for building a project
定义scalaHome: scalaHome := Some(file("/path/to/scala/home/")) 如果您最终还要重建Play,请参阅How can I change version of Scala that is used by Play,SBT and its plugins?. 编辑:我实际上看了一下bug描述.看起来补丁将允许序列化/反序列化由两个不同的Scala版本创建的WrappedArray,这两个版本都包含此补丁.以来
它可能不适合你.从新的错误消息判断,可能是Scala的版本被序列化,只是没有包含字段2.10.3,并且无法反序列化.我最好的建议是尝试使用不同的Scala版本进行反序列化(可能不是2.10.*,因为它们是二进制兼容的)并且看看哪个版本有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |