gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 13:39:38 28 4
gpt4 key购买 nike

我正在建立一个游戏!使用 Play! 的框架应用程序2.2.1,sbt 0.13.0,我本地scala版本是2.10.3。

在反序列化我从同事那里继承来用于处理这个项目的特定文件时,我遇到了一个 serialVersionUID 问题(我不知道是谁创建了这个序列化文件(或何时))。

我的错误消息,在 Play 中构建时!:
Caused by: java.io.InvalidClassException: scala.collection.mutable.WrappedArray$ofRef; local class incompatible: stream classdesc serialVersionUID = 8184381945838716286, local class 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 发行版,使用:
ant buildant partialdist
然后在玩!我通过将以下内容添加到我的 Build.scala 文件中来指定用于 SBT 和插件的 scala 版本:
scalaVersion := "2.10.3"autoScalaLibrary := falsescalaHome := Some(file("/path_to_my_rebuilt_scala_distribution"))
现在我的错误信息是:
Caused by: java.io.InvalidClassException: scala.collection.mutable.WrappedArray$ofRef; incompatible types for field bitmap$0
编辑#2:

我正在向下移动 Scala 版本,当我到达 2.9.2 时,通过应用补丁修复了有关 WrappedArray$ofRef 的错误。现在我收到另一个不同类的序列化错误:
java.io.InvalidClassException: scala.Symbol; local class incompatible: stream classdesc serialVersionUID = -3681772905693662441, local class serialVersionUID = 7747205442425187939
我将向下移动到 Scala 2.9.1,看看我是否可以使用该版本访问文件的内容。

* 编辑#3:

在 Scala 版本 2.9.1-1 中,出现不同的序列化错误:java.io.InvalidClassException: scala.Tuple2; local class incompatible: stream classdesc serialVersionUID = 3990034604647285925, local class serialVersionUID = 5867822941721784448
不知道接下来要尝试什么……继续使用 Scala 版本,还是有其他建议?

最佳答案

To use a local Scala installation for building a project定义 scalaHome :

scalaHome := Some(file("/path/to/scala/home/"))

另见 How can I change version of Scala that is used by Play, SBT and its plugins?如果您最终也必须重建 Play。

编辑:我实际上查看了错误描述。看起来补丁将允许序列化/反序列化 WrappedArray由两个不同的 Scala 版本创建,它们都包含这个补丁。自从

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



它可能对你不起作用。从新的错误消息来看,可能是它序列化的 Scala 版本根本不包含 2.10.3 的字段,并且不可能反序列化。我最好的建议是尝试使用不同的 Scala 版本进行反序列化(可能不是 2.10.*,因为它们是二进制兼容的),看看哪个有效。

关于scala - 如何修复 scala-library.jar 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957572/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com