首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android中反序列化对象时的StackOverFlowError

在android中反序列化对象时的StackOverFlowError
EN

Stack Overflow用户
提问于 2012-02-10 19:36:52
回答 3查看 492关注 0票数 1

我一直在尝试反序列化一个由android应用程序中的普通JDK创建的对象,每当我尝试这样做时,我都会得到一个StackOverFlowError。

我可以在davlik虚拟机中使用我使用JDK序列化的对象吗?文件大小为4 MB,存储在assets文件夹中,生成错误的代码行如下

代码语言:javascript
复制
trie = (Trie<String, String>) new ObjectInputStream( ctx.getAssets().open(FILE_NAME)).readObject(); 


02-10 15:27:41.036: E/AndroidRuntime(2019): FATAL EXCEPTION: main
02-10 15:27:41.036: E/AndroidRuntime(2019): java.lang.StackOverflowError
02-10 15:27:41.036: E/AndroidRuntime(2019):     at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:414)
02-10 15:27:41.036: E/AndroidRuntime(2019):     at java.io.DataInputStream.readUTF(DataInputStream.java:433)
02-10 15:27:41.036: E/AndroidRuntime(2019):     at java.io.ObjectInputStream.readNewString(ObjectInputStream.java:2171)
02-10 15:27:41.036: E/AndroidRuntime(2019):     at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:918)
02-10 15:27:41.036: E/AndroidRuntime(2019):     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
02-10 15:27:41.036: E/AndroidRuntime(2019):     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
02-10 15:27:41.036: E/AndroidRuntime(2019):     at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1291)
02-10 15:27:41.036: E/AndroidRuntime(2019):     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:518)
02-10 15:27:41.036: E/AndroidRuntime(2019):     at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1535)
02-10 15:27:41.036: E/AndroidRuntime(2019):     at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1443)
....
EN

回答 3

Stack Overflow用户

发布于 2012-02-10 19:39:41

这只是一个建议,你为什么不使用KvmSerializable,它是针对android dalvik进行了优化的。

票数 1
EN

Stack Overflow用户

发布于 2012-02-10 19:42:55

Java对象序列化并不意味着交换格式,它不能跨越不同JVM版本( androids davlik非常不同)或类签名更改的边界。如果您喜欢交换数据,请坚持使用某种可移植的格式。

一种选择是xml (但非常冗长),或者您也可以使用JSON。有很多工具可以将数据绑定到这些格式或从这些格式绑定数据。

(我还开发了一个:https://github.com/ko5tik/jsonserializer )

票数 0
EN

Stack Overflow用户

发布于 2012-02-10 19:51:02

我认为最好将文件拆分成多个片段,因为堆栈不能处理超过32k的任何内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9227161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档