我们使用Xamarin+IKVM为iOS平台编译java代码。在将前面序列化的数据反序列化为文件时,我将获得ClassCastException:
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1943),java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1850),java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java),java.io.ObjectInputStream.readObject0(ObjectInputStream.java),java.io.ObjectInputStream.readObject(ObjectInputStream.java:361),com.kiwi.animaltown.UserAssetRenderer.deSerialize(UserAssetRenderer.java:2072)
下面是我要序列化的类:
public class TestSerializeClass implements Serializable
{
/**
*
*/
private static final long serialVersionUID = -1218312212872650919L;
public int leftNonTransparentX = -1;
public TestSerializeClass()
{
}
}用于序列化:
obOut = new ObjectOutputStream(bufferOutStream);
for(int x = 10; x < 20; x = x+1) {
TestSerializeClass obj = new TestSerializeClass();
obOut.writeObject(obj);
}反序列化:
inStr = AssetConfig.assetStorage.getFileHandle(fileName).read();
BufferedInputStream buffStr = new BufferedInputStream(inStr, 8*1024);
ObjectInputStream in = new ObjectInputStream(buffStr);
try {
Object obj;
while (true) {
obj = (TestSerializeClass)in.readObject();
}
catch...发布于 2016-08-24 13:37:07
我意识到我在派对上迟到了,坦白地说,我已经近十年没有碰过IKVM了,但我确实记得在序列化过程中遇到了类加载问题。
我们所做的不是深入研究,而是依靠第三方序列化库来回避这个问题。最后,我们和XStream在一起很开心。现在,我建议使用可移植的序列化解决方案(例如,在JSON或MessagePack之上工作的东西)。这样,如果某件事情不成功,您就有更多的自由度--您只需将序列化子系统交换成特定于平台的实现即可。
https://stackoverflow.com/questions/25486198
复制相似问题