加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

我如何修复scala-library.jar中的错误

发布时间:2020-12-16 08:43:28 所属栏目:安全 来源:网络整理
导读:我正在建立一个游戏!使用Play的框架应用! 2.2.1,sbt 0.13.0,我的本地版本的 scala是2.10.3. 我在反序列化我从同事继承的特定文件时遇到了一个serialVersionUID问题来处理这个项目(我不知道是谁创建了这个序列化文件(或什么时候)). 在Play中构建时出现错误
我正在建立一个游戏!使用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”
autoScalaLibrary:= false
scalaHome:= some(file(“/ path_to_my_rebuilt_scala_distribution”))

现在我的错误信息是:

引起: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中,我得到一个不同的序列化错误:
java.io.InvalidClassException:scala.Tuple2;本地类不兼容:stream classdesc serialVersionUID = 3990034604647285925,本地类serialVersionUID = 5867822941721784448

不知道接下来要尝试什么..继续下去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,这两个版本都包含此补丁.以来

(I have no idea who created this serialized file (or when))

它可能不适合你.从新的错误消息判断,可能是Scala的版本被序列化,只是没有包含字段2.10.3,并且无法反序列化.我最好的建议是尝试使用不同的Scala版本进行反序列化(可能不是2.10.*,因为它们是二进制兼容的)并且看看哪个版本有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读