无法序列化/反序列化 ArrayList

2023-12-04

我正在尝试序列化和反序列化一个数组列表,其中包含一个对象:

HairBirt param = new HairBirt();
param.setName("name");
param.setValue(2.3f);

HairBirt param2 = new HairBirt();
param2.setName("name2");
param2.setValue(2.4f);

ArrayList<HairBirt> list = new ArrayList<HairBirt>();

list.add(param);

list.add(param2);

ByteArrayOutputStream bos = null;
try {
    bos = new ByteArrayOutputStream();
    ObjectOutputStream obj_out = new ObjectOutputStream(bos);
    obj_out.writeObject(list);
} catch (IOException e) {
    e.printStackTrace();
}

String encoded = bos.toString();
try {
    encoded = URLEncoder.encode(encoded, "UTF-8");
} catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
}
System.out.print("The serialized output is: " + encoded);   

//DECODE

ArrayList<HairBirt> paramDecoded;

String myParam = null;
try {
    myParam = URLDecoder.decode(encoded, "UTF-8");
} catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
}
System.out.println("Got parameters");
ByteArrayInputStream bis = new ByteArrayInputStream(myParam.getBytes());

try {
    ObjectInputStream obj_in = new ObjectInputStream(bis);

    paramDecoded = (ArrayList<HairBirt>) obj_in.readObject();
} catch (IOException e) {
    e.printStackTrace();
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

HairList 对象也是一个可序列化的对象。

此代码执行返回以下错误:

java.io.InvalidClassException: java.util.ArrayList; local class incompatible: stream classdesc serialVersionUID = 8664875232659988799, local class serialVersionUID = 8683452581122892189

in line paramDecoded = (ArrayList<HairBirt>) obj_in.readObject();

我不知道我做错了什么。你能给个小费吗?

Update:

解决:只需使用 HairBirt 的本机数组而不是 ArrayList,它就可以工作:

HairBirt[] list = new HairBirt[x];

代替

ArrayList<HairBirt> list = new ArrayList<HairBirt>();

感谢大家的帮助。


不要使用ByteArrayOutputStream.toString()- 相反,使用toByteArray()并对二进制数据进行 Base64 编码,将其转换为字符串,而不会丢失信息。

我强烈怀疑这是主要问题 - 序列化后丢失了数据。您可能还应该关闭或至少冲洗ObjectOutputStream。我不知道在这种情况下这是否真的有什么作用,但这似乎是一个好主意。

我不相信 Java 中直接有任何 base64 支持(无论如何,在公共类中),但是您可以使用各种 3rd 方库,例如Apache Commons Codec 库中的一个.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法序列化/反序列化 ArrayList 的相关文章

  • 使用 JDBC 获取 Oracle 11g 的最后插入 ID

    我是使用 Oracle 的新手 所以我将放弃之前已经回答过的内容这个问题 https stackoverflow com questions 3131064 get id of last inserted record in oracle
  • 获取文件的锁

    我想在对特定文件开始 threo read 时获取文件上的锁定 以便其他应用程序无法读取已锁定的文件并希望在线程终止时释放锁定文件 您可以获得一个FileLock https docs oracle com javase 8 docs ap
  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • Reactive Spring 不支持 HttpServletRequest 作为 REST 端点中的参数?

    我创建了一个 RestController 如下所示 RestController public class GreetingController RequestMapping value greetings method RequestM
  • 删除优先级队列的尾部元素

    如何删除优先级队列的尾部元素 我正在尝试使用优先级队列实现波束搜索 一旦优先级队列已满 我想删除最后一个元素 优先级最低的元素 Thanks 没有简单的方法 将元素从原始元素复制到新元素 最后一个除外 PriorityQueue remov
  • Android 中 localTime 和 localDate 的替代类有哪些? [复制]

    这个问题在这里已经有答案了 我想使用从 android API 获得的长值 该值将日期返回为长值 表示为自纪元以来的毫秒数 我需要使用像 isBefore plusDays isAfter 这样的方法 Cursor managedCurso
  • FileNotFoundException - Struts2 文件上传

    Strange FileNotFoundException使用Struts2上传文件时 这是 JSP 的一部分
  • Spring数据中的本机查询连接

    我有课 Entity public class User Id Long id String name ManyToMany List
  • 如何使用正则表达式验证 1-99 范围?

    我需要验证一些用户输入 以确保输入的数字在 1 99 范围内 含 这些必须是整数 Integer 值 允许前面加 0 但可选 有效值 1 01 10 99 09 无效值 0 007 100 10 5 010 到目前为止 我已经制定了以下正则
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • 无法在 Java/Apache HttpClient 中处理带有垂直/管道栏的 url

    例如 如果我想处理这个网址 post new HttpPost http testurl com lists lprocess action LoadList 401814 1 Java Apache 不允许我这么做 因为它说竖线 是非法的
  • Java - 从 XML 文件读取注释

    我必须从 XML 文件中提取注释 我找不到使用 JDOM 或其他东西来让它们使用的方法 目前我使用 Regex 和 FileReader 但我不认为这是正确的方法 您可以使用 JDOM 之类的东西从 XML 文件中获取注释吗 或者它仅限于元
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • Java 的 PriorityQueue 与最小堆有何不同?

    他们为什么命名PriorityQueue如果你不能插入优先级 它看起来与堆非常相似 有什么区别吗 如果没有区别那为什么叫它PriorityQueue而不是堆 默认的PriorityQueue是用Min Heap实现的 即栈顶元素是堆中最小的
  • 使用 JFreeChart 为两个系列设置不同的 y 轴

    我正在使用 JFreeChart 使用折线图绘制两个数据系列 XYSeries 复杂的因素是 其中一个数据系列的 y 值通常远高于第二个数据系列的 y 值 假设第一个系列的 y 值约为数百万数量级 而第二个数据系列的 y 值约为数百万数量级

随机推荐

  • 背景附件:固定;不使用背景位置

    我做了一个codepen解释我的问题 当用户滚动时 蓝色图像应跟随用户滚动 蓝色图像应粘贴在旁边部分的另一侧 右侧为左侧 左侧为右侧 pb 是这样的 background attachment fixed 这个CSS规则不起作用 backg
  • EnableAutoRejoiningGroups 在 SignalR 1.0 中消失

    看起来 GlobalHost HubPipeline EnableAutoRejoiningGroups 已在 SignalR 1 0 最终版本中消失 然而 发行说明中没有提及它的去向 也没有任何线索如何恢复此功能 有人知道发生了什么事吗
  • 了解 C 中的静态变量声明/初始化

    我的项目中只有一个名为 test c 的文件 如果我不定义 TRUE 下面的代码将无法编译 我用的是vc 我只是想了解这种行为 请阐明这方面的情况 ifdef TRUE static int a static int a 1 else st
  • 如何使用正则表达式 String.match() 区分 ${SOME_TEXT}

    我需要这个字符串 var x Hi name How are you name you are old name share with other how do u feel 我需要使用正则表达式知道有多少不同的 ANY THING 存在
  • 为什么非侵入式序列化要添加 5 字节零前缀?

    我正在研究使用 boost archive 的应用程序中从非标准字符串到标准字符串的端口 非标准字符串的 反 序列化以非侵入式方式定义 如下例所示 序列化和反序列化按预期工作 但是当移植的应用程序收到旧消息时 它会因分配错误而崩溃 这是由于
  • opencv 的 Python/Kivy 相机小部件错误

    我一直在尝试制作一个打开设备相机的应用程序 但出现此错误 CRITICAL Camera Unable to find any valuable Camera provider at all videocapture ImportError
  • 导入错误:无法导入名称“_imagingtk”

    我正在使用 Anaconda 和 python 3 4 但我无法在 Windows 8 1 上获得我需要的所有枕头包 我通过 Anaconda 控制台安装了枕头 pip install pillow 这导致 The following pa
  • 无法在 Anaconda 中安装聊天机器人

    安装时chatterbot在 Anaconda 中使用 Python 3 7 我收到以下错误 找到现有安装 PyYAML 3 13 无法卸载 PyYAML 它 是一个 distutils 安装项目 因此我们无法准确地 确定哪些文件属于它 这
  • 如何在 PL/pgSQL 中按行类型返回表

    我正在尝试使用 PL pgSQL PostgreSQL 9 3 实现一个函数 该函数返回与参数中的输入表具有相同结构的表 基本上 我想更新一个表 并使用 plpgsql 返回更新后的表的副本 我搜索了一下 发现了几个相关的问题 例如从 PL
  • 继承 Angular 5 组件并覆盖装饰器属性

    在 Angular 2 4 中 我们可以创建自定义装饰器来扩展父组件 装饰器属性的实际重写是根据需要在自定义装饰器中处理的 为了获取父注释 我们使用了 let parentAnnotations Reflect getMetadata an
  • CMake:我如何依赖自定义目标的输出?

    我无法修改的传统 Make 流程会生成一个我必须对其进行一些后处理的目标 I use add custom target强制 Makefile 始终运行 我用add custom command对于我的后处理步骤 问题是add custom
  • 以编程方式从 IOS 中的配置文件检索数据

    我一直在搜索所有 Apple 文档 包括这些论坛 但无法从我在 iPhone 上创建并安装的配置文件中检索证书 进一步来说 使用 iPhone 配置实用程序 我创建了一个简单的配置文件 其中在 凭据 选项卡下包含一个证书 我现在尝试使用我的
  • 如何将 XML 块从一个文档复制到另一个文档?

    我有两个 dataGridView 每个都加载一个 XML 文件 这样您就可以在每个网格之间拖放行 然而目前 它所做的只是从 dataGridView 复制数据 这工作正常 但我需要复制与该行相关的所有 XML 这是我必须使用的 XML
  • WPF:使用线程访问 UI 对象会出现错误

    我有一个在文件夹中修改文件时调用的函数 此函数更新存储在 UI 中的列表视图的项目 这是函数 Private Sub FileChangeNotify Try LstMoulures Items Refresh Catch ex As Ex
  • 传递 ArrayList 到 Activity

    我搜索了一些主题 但没有找到解决我的问题的方法 public class Series implements Parcelable private String name private int numOfSeason private in
  • 图表工具在 Visual Studio 中呈灰色显示

    我正在尝试将图表添加到 Visual Studio 表单 但该按钮呈灰色 我正在使用 NET Framework 3 5 和 C 按照在线说明 我已从此链接下载并安装了 dll 文件 http www microsoft com en us
  • 如何在表单提交后使用 Ajax POST

    我认为这很简单 但我无法在任何地方找到如何做到这一点 正如标题所示 在成功提交表单帖子后如何执行 ajax 帖子 我试图搜索它 但我看到的只是与我需要的相反 这是在 ajax 帖子之后提交的 我会尝试制作一个与我正在做的非常相似的程序草案
  • React Native - 使用状态时文本输入闪烁

    我正在向 TextInput 组件的输入文本添加一些验证 TextInput 的值在状态中处理 并且仅在输入的值有效时更新 我的代码看起来像这样 class TextInputWithValidation extends Component
  • 选择时间序列的一部分

    在下面的代码中 我创建了一个简单的数据系列 一个时间向量 然后创建了一个时间序列 我对两者的绘制都没有问题 它们位于同一个图上并不重要 我无法弄清楚如何对时间序列的一部分进行子集化 如最后一个因错误而失败的命令所示 gt gt timese
  • 无法序列化/反序列化 ArrayList

    我正在尝试序列化和反序列化一个数组列表 其中包含一个对象 HairBirt param new HairBirt param setName name param setValue 2 3f HairBirt param2 new Hair