我有两个不同的Scala版本2.9.2的Scala-Lang网站。我怎么知道这两个版本的scala是否完全一样?
1号是二进制代码:阶-2.9.2.tgz
2号是源代码:阶来源-2.9.2.tgz
我建立阶从源代码。我曾尝试在应用程序和二进制工作中使用这两种工具,但编译后的源代码没有。我正在编译一个我编写的小型scala文件(参见下面的示例),然后创建一个jar,然后在命令行上从该jar中运行“main”。为了制作这个jar,我必须在类路径中包含“scala-library.jar”(from this SO answer)。我需要能够使用我构建的scala源,以便稍后修改源代码。
当我使用已编译的源代码时,出现serialVersionUID错误,而二进制代码不会导致此问题。
确切的错误消息(使用我从源代码编译阶时):
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]
}
}
}
有什么方法可以在编译二进制文件时找出使用哪个版本的javac? – Hal
这是错误的做法。如果你正在序列化,那么你应该使用'@SerialVersionUID(value)'注解你的类。' –
serialVersionUID问题来自WrappedArray中的scala-library(请参阅原始帖子中的错误消息)。 – Hal