teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

コードを修正

2018/02/04 06:59

投稿

k-ta
k-ta

スコア7

title CHANGED
File without changes
body CHANGED
@@ -13,49 +13,32 @@
13
13
  import java.nio.file.Paths;
14
14
  import java.nio.file.Files;
15
15
 
16
- case class Data(a: String, b: String, c: Int, d: Int, e: Int)
16
+ case class Data(a: String, b: Int)
17
- case class SerializeSample[A](arr: Array[List[A]]) {
17
+ object Main {
18
- def serialize(): Unit = {
18
+ def main(args: Array[String]): Unit = {
19
+ val arr: Array[List[Data]] = Array[List[Data]](List(Data("a", 97)))
20
+ val path = Paths.get("SerializeSample.bin")
21
+ // serialize
19
- val oos = new ObjectOutputStream(Files.newOutputStream(Paths.get("SerializeSample.bin")))
22
+ val oos = new ObjectOutputStream(Files.newOutputStream(path))
20
- oos.writeObject(this)
23
+ oos.writeObject(arr)
21
24
  oos.close()
22
- }
23
- }
24
- object SerializeSample {
25
+ // deserialize
25
- def deserialize[A](): SerializeSample[A] = {
26
- val ois = new ObjectInputStream(Files.newInputStream(Paths.get("SerializeSample.bin")))
26
+ val ois = new ObjectInputStream(Files.newInputStream(path))
27
- val ret = ois.readObject().asInstanceOf[SerializeSample[A]]
27
+ val ret = ois.readObject().asInstanceOf[Array[List[Data]]]
28
28
  ois.close()
29
- ret
29
+ println(ret.mkString(" "))
30
30
  }
31
31
  }
32
- object Main {
33
- def main(args: Array[String]): Unit = {
34
- val d = Array(List(Data("a", "b", 1, 2, 3), Data("c", "d", 1, 2, 3)))
35
- val s = SerializeSample[Data](d)
36
- s.serialize
37
- SerializeSample.deserialize[Data]()
38
- }
39
- }
40
32
  ```
41
33
  ```
42
34
  sbt:sbt> run
43
- [info] Compiling 1 Scala source to /home/kkkk/mnt/tmp/serializetest/sbt/target/scala-2.12/classes ...
44
- [info] Done compiling.
45
- [info] Packaging /home/kkkk/mnt/tmp/serializetest/sbt/target/scala-2.12/sbt_2.12-0.1.0-SNAPSHOT.jar ...
46
- [info] Done packaging.
47
35
  [info] Running Main
48
- [error] (run-main-6) java.lang.ArrayStoreException: scala.collection.immutable.List$SerializationProxy
36
+ [error] (run-main-13) java.lang.ArrayStoreException: scala.collection.immutable.List$SerializationProxy
49
37
  [error] java.lang.ArrayStoreException: scala.collection.immutable.List$SerializationProxy
50
38
  [error] at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1975)
51
39
  [error] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
52
- [error] at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)
53
- [error] at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211)
54
- [error] at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069)
55
- [error] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
56
40
  [error] at java.io.ObjectInputStream.readObject(ObjectInputStream.java:433)
57
- [error] at SerializeSample$.deserialize(Main.scala:17)
58
- [error] at Main$.main(Main.scala:27)
41
+ [error] at Main$.main(Main.scala:17)
59
42
  [error] at Main.main(Main.scala)
60
43
  [error] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
61
44
  [error] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
@@ -82,4 +65,5 @@
82
65
  [error] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
83
66
  [error] at java.lang.Thread.run(Thread.java:748)
84
67
  [error] (Compile / run) Nonzero exit code: 1
68
+ [error] Total time: 0 s, completed 2018/02/04 15:59:19
85
69
  ```

1

OSを追記

2018/02/04 06:59

投稿

k-ta
k-ta

スコア7

title CHANGED
@@ -1,1 +1,1 @@
1
- scalaのシリアライズとデシリアライズ
1
+ scalaのデシリアライズでエラーになる
body CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
 
8
8
  scalaのバージョンは2.12.4、sbtのバージョンは1.1.0です。
9
+ OSはCentOS7です。
9
10
  ```scala
10
11
  import java.io.ObjectOutputStream;
11
12
  import java.io.ObjectInputStream;