我有来自 Scala-Lang 网站的 scala 版本 2.9.2 的两个不同副本。
1号是二进制代码:scala-2.9.2.tgz
2号是源代码:scala-sources-2.9.2.tgz
我从源代码构建了 scala。我尝试在应用程序和二进制文件中同时使用,但编译的源代码没有。
我的用例:我正在编译我编写的一个小 scala 文件(参见下面的示例),然后创建一个 jar,然后在命令行上从该 jar 中运行“main”。要制作那个 jar,我必须在类路径中包含“scala-library.jar”(来自this SO answer)。我需要能够使用我构建的 scala-sources,以便以后可以修改源代码。
当我使用编译后的源代码时,我收到关于 serialVersionUID 的错误,而二进制代码不会导致此问题。
确切的错误消息(使用我从源代码构建的 scala 时):
java.io.InvalidClassException: scala.collection.mutable.WrappedArray$ofRef; local class incompatible: stream classdesc serialVersionUID = 8184381945838716286, local class serialVersionUID = 6238838760334617323
我为反序列化文件而运行的示例代码:
object test {
def main(args: Array[String]) {
var infile = args(0)
val thing1 : MyClass = withObjectInput(infile) {
f => f.readObject().asInstanceOf[MyClass]
}
}
}