私は guava-14.0.1 を実行しており、次のコードがあります。
public class LinearClsMalletAdaptor extends Classifier implements Serializable{
private BiMap<Double, String> indexToLabel;
.........
classifier = new LinearClsMalletAdaptor(sp, model, hashBiMap.inverse());
classifier は保持したいオブジェクトであり、Mac でのシリアライズとデシリアライズに問題はありません。
しかし、私が友人に送ったのと同じシリアル化されたファイルを使用すると、逆シリアル化中に Windows マシンで次の問題が発生しました。
java.lang.ClassCastException: com.google.common.collect.HashBiMap cannot be cast to
com.google.common.collect.AbstractBiMap
at com.google.common.collect.AbstractBiMap$Inverse.readObject(AbstractBiMap.java:390)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:969)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at java.util.HashMap.readObject(HashMap.java:1030)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:969)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at sg.edu.astar.i2r.batc.projects.getme.core.classify.hier.topdown.TopDownClassificationAnnotator.initialize(TopDownClassificationAnnotator.java:63)
at
彼が自分のマシンでシリアル化を実行する場合、この問題は発生しません。私は少し混乱しています。HashBiMap クラスはシリアライズ可能ですか? APIドキュメントは言う
HashBiMap とその逆はどちらもシリアライズ可能です。
しかし、ここでのこの議論は少し混乱しているように見えますか?