import java.io. {FileInputStream, FileOutputStream, ObjectInputStream, ObjectOutputStream}
object SymbolSerializeDemo {
def main(args: Array[String]): Unit = {
val fileName = "file.ser"
val symbolCheck: Symbol = Symbol("someSymbol")
//serializeToFile(symbolCheck, fileName)
deserializeFromFile(fileName)
}
private def serializeToFile(input: Symbol, fileName: String): Unit = {
try {
val file: FileOutputStream = new FileOutputStream(fileName)
val out: ObjectOutputStream = new ObjectOutputStream(file)
out.writeObject(input)
}
}
private def deserializeFromFile(fileName: String): Unit = {
try {
val file: FileInputStream = new FileInputStream(fileName)
val input: ObjectInputStream = new ObjectInputStream(file)
val output = input.readObject.asInstanceOf[Symbol]
println("Symbol after deseralization " output.name)
}
}
}
我正在嘗試反序列化 scala 符號,在 scala 2.11 中序列化,但出現錯誤,因為java.io.InvalidClassException: scala.Symbol; local class incompatible: stream classdesc serialVersionUID = 2966401305346518859, local class serialVersionUID = 6865603221856321286我們可以為此或任何其他選項撰寫自定義序列化嗎?
我嘗試為類和 Symbol 添加 serialVersionUID
uj5u.com熱心網友回復:
我已通過將 scala 版本從 2.12.17 降級到 2.12.6 來解決此問題。
uj5u.com熱心網友回復:
您可以從 Scala 2.12 運行 Scala 2.11 進行反序列化,還是會太慢?
// Scala 2.12
import sys.process._
Symbol("scala-2.11.12/bin/scala path_to_deserializer/Deserializer.scala path_to_file/file.ser".!!)
// 'someSymbol
// Deserializer.scala
import java.io.{FileInputStream, ObjectInputStream}
object Deserializer {
def main(args: Array[String]): Unit = {
deserializeFromFile(args(0))
}
private def deserializeFromFile(fileName: String): Unit = {
val file: FileInputStream = new FileInputStream(fileName)
val input: ObjectInputStream = new ObjectInputStream(file)
val output = input.readObject.asInstanceOf[Symbol]
println(output.name)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/536747.html
標籤:爪哇斯卡拉连载反序列化
上一篇:circe在包含陣列時看不到欄位
