当我序列化对象时出现 StackOverflowError

2024-01-04

我想用这个方法序列化一个对象:

public void serializ(CRDT m) throws IOException {
    ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
    ObjectOutputStream stream = new ObjectOutputStream(byteOutput);
    stream.writeObject(m);
    sumMemory = byteOutput.size();

    stream.flush();
    stream.close();
    byteOutput.flush();
    byteOutput.close();
}

我有一个例外java.lang.StackOverflowError

Exception in thread "main" java.lang.StackOverflowError
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1169)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    ...

我读了一些论坛,我需要重新实现writeObject / readObject方法。 这是唯一可能的解决方案吗?以及如何重新实施writeObject / readObject

我要序列化的对象是:http://pastebin.com/D1kEidtn http://pastebin.com/D1kEidtn

导致错误的两个类是:Pastebin.com/Sb3X0Quq http://www.pastebin.com/Sb3X0Quq and 在此输入链接描述 http://www.pastebin.com/cw15LQ1z


CRDT 是序列化对象 m 的超类。 错误是从CRDT派生的类似乎有对自身的引用,导致无限递归
您可以在堆栈跟踪中看到这一点。
Tipp 通过使用调试器或在 serialize() 方法的开头添加 System.out.println(m.getClass()) 来找出对象 CRDT m: 的类。 然后,当您知道该类时,检查该对象是否具有对其自身的引用。

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

当我序列化对象时出现 StackOverflowError 的相关文章

  • 如果列名不同,则一对多休眠连接

    我有三个具有以下结构的表 合同 gt Contract id 主要 customer company id Vendor company id 公司 gt Company id 主要 创建日期 创建者 Company Timeline gt
  • 如何在 Java 中访问嵌套的 HashMap?

    我有一个 Java 中的 HashMap 其中的内容 你们可能都知道 可以通过以下方式访问 HashMap get keyname 如果一个 HashMap 位于另一个 HashMap 中 即嵌套的 HashMap 我将如何访问内容 我可以
  • 如何使用 Maven Failsafe 插件运行 JUnit 5 集成测试?

    当我运行命令时 Maven Failsafe 插件找不到我的 JUnit 5 集成测试mvn clean failsafe integration test 尽管它可以找到文件 我有junit jupiter api and junit j
  • GET 请求的 Spring 注解

    这两种spring GET方法有什么区别呢 哪一种是首选方法 Component Scope request Path public class TestComponent GET Path hello public String prin
  • 项目缺少所需的注释处理库

    我的 Eclipse IDE 突然在问题视图中显示 xxxx 项目缺少所需的注释处理库 xxxx M2 REPO 中的一些旧 jar 我用谷歌搜索 没有找到任何答案 为什么我的项目使用旧的 jar 以及错误来自哪里 To remove th
  • 如何捕获反序列化异常?

    PHP 是否可以在以下情况下捕获异常 unserialize 产生错误 一个简单的方法是 ret unserialize foo if ret null Error case 但这不是最现代的解决方案 最好的方法是像前面提到的那样有一个自定
  • 如何为小程序提供对文件系统写入的访问权限

    我在设置小程序的策略文件时遇到问题 我是第一次这样做 不知道如何在java中设置小程序的策略文件 实际上我想授予小程序在文件系统上写入的权限 为此我必须向小程序授予文件权限 所以我创建了一个名为 java policy 的文件 并将以下代码
  • OpenNLP 与斯坦福 CoreNLP

    我一直在对这两个包进行一些比较 但不确定该往哪个方向走 我简单地寻找的是 命名实体识别 人 地点 组织等 性别识别 一个不错的训练 API 据我所知 OpenNLP 和斯坦福 CoreNLP 提供了非常相似的功能 然而 Stanford C
  • 使用 JAX-WS 的 WebLogic 中没有模式导入的单个 WSDL

    如何使用 JAX WS 配置由 WebLogic 10 3 6 生成的 Web 服务 以将对象架构包含在单个 WSDL 文件声明 而不是导入声明 中 示例代码 界面 import javax ejb Local Local public i
  • 当 JMS Prod 位于辅助 POJO 类中时,如何在事务中包含 JMS Producer

    简短的问题 有没有办法强制无状态 EJB 调用的 POJO 存在于 EJB 的上下文中 以便事务和资源注入可以在 POJO 中工作 具体来说 在我想要做的事情的上下文中 如何在 EJB 的事务中包含 POJO JMS 生产者 该生产者在调用
  • LocalDate 减去 period 得到错误的结果

    LocalDate减去一个Period 如 28年1个月27天 得到错误的结果 但减去一个Period 只有天单位 如 10282 天 得到正确的结果 有什么需要注意的吗 public static void main String arg
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

    我超级卡住o 0 在尝试通过 Java 驱动程序进行身份验证时 存在捕获异常的问题 正如你可能会看到的Throwable类不工作 private MongoClient mongoClient private MongoDatabase m
  • 使用 HTTPServletRequestWrapper 包装请求参数

    我有一个可以验证 授权 REST 调用的过滤器 该过滤器需要访问请求参数 因此我为此编写了一个自定义 HTTPServletRequestWrapper import java util Collections import java ut
  • Java8:流映射同一流中的两个属性

    我有课Model带有以下签名 class Model private String stringA private String stringB public Model String stringA String stringB this
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • android 中的 java.net.URL ..新手问题

    我是java新手 正在尝试android开发 以下代码生成 malformedURLException 有人可以帮助我识别异常吗 任何提示都会非常有帮助 package com example helloandroid import and
  • Java 中的微分方程

    我正在尝试用java创建一个简单的SIR流行病模型模拟程序 基本上 SIR 由三个微分方程组定义 S t l t S t I t l t S t g t I t R t g t I t S 易感人群 I 感染人群 R 康复人群 l t c
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反

随机推荐

  • Kubernetes 中的一个节点上仅允许一个类型的 pod

    如何在 Kubernetes 中的一个节点上仅允许一个类型的 pod 守护进程集不适合此用例 例如 限制一个节点上仅调度一个 Elasticsearch pod 以防止节点出现故障时数据丢失 可以通过仔细规划Pod的CPU 内存资源和集群的
  • 钥匙斗篷|无法在异步函数中等待 updateToken()

    我们正在使用 React Redux 前端开发 Spring 应用程序 我们成功地将其与 Keycloak 身份验证服务集成 但是 访问令牌超时后 我们遇到了不需要的行为 我们的restMiddleware 看起来像这样 简化 functi
  • 将其他分支重置为当前分支,无需签出

    我正在为我的 Git 工作流程编写一些脚本 我需要将其他 现有 分支重置为当前分支 而无需签出 Before CurrentBranch commit A OtherBranch commit B After CurrentBranch c
  • 如何通过js启用/禁用浏览器历史记录

    我们可以通过java脚本代码启用或禁用浏览器历史记录吗 如果可能的话请告诉我执行此操作的机制 我认为这是不可能的 你可以尝试使用document location replace 它用于清除历史记录中的最后一个条目并将其替换为新 url 的
  • 在 PHP 7.4 中生成 SOAP 数组

    我一直在工作项目中使用 SOAP API 我很幸运 WSDL 基本上毫无意义 因为请求的正文是
  • C++11 线程不能与虚拟成员函数一起使用

    我试图让一个类运行一个线程 它将在循环中调用一个名为 Tick 的虚拟成员函数 然后我尝试派生一个类并重写 base Tick 但在执行时 程序只是调用基类的 Tick 而不是覆盖它 有什么解决办法吗 include
  • 尝试在单独的工作表中复制粘贴单元格时出现 VBA 运行时错误 1004

    目前 我的 VBA Excel 2007 代码中出现以下错误 运行时错误 1004 对象 Worksheet 的方法 Range 失败 在通过标题中的这个错误解决了相当多的问题后 我还没有找到类似的情况或解决我的问题的方法 也就是说 如果不
  • Android:带有 FragmentTabHost 的底部选项卡

    我试图将 FragmentTabHost 放在屏幕底部 不久前 我能够使用常规 TabHost 做到这一点 如下这个线程 https stackoverflow com questions 2395661 android tabs at t
  • +1 和 -1 之间的差异

    gt t 1 1 Num a gt a gt a gt t 1 1 Num a gt a 为什么第二个不是函数 我必须写吗 1 或者 还有更好的方法 这是因为 1 然而被解释为消极的 1 被解释为柯里化函数 x gt 1 x 在哈斯克尔中
  • 如何将 Visual Studio 附加到尚未启动的进程?

    我的 NET 程序由于某些原因无法从 Visual Studio 运行 从 Excel 2010 模板项目创建的 Excel 文件 我需要调试启动事件 如果我想调试程序初始化后发生的事件 那么没有问题 我从资源管理器运行该程序 将进程附加到
  • 如何在Android-ndk中将变量内容输出到“LogCat”窗口

    我在 Eclipse ADT 环境中使用 Android sdk ndk 在Android sdk Java开发中 我可以使用 Log i Log w 语句将消息和变量内容输出到 LogCat 窗口 然而 在Android ndk C C
  • 创建按字母顺序索引的列表 (ColdFusion + Microsoft SQL Server)

    我目前正在努力寻找知道如何做到这一点的人 我尝试了几种不同的方法 最终得到了一半的结果 但并不完全是我想要的 基本上我正在尝试创建一个显示所有乐队 A Z 的列表 但乐队名称是从数据库中调用的 所以我必须在嵌套列表中使用 band name
  • 如何验证“Cache-Control”、“无缓存、无存储、必须重新验证”

    我正在学习缓存以及如何管理它 当我打开网站页面时 我可以看到图像 css 文件 js 文件等静态内容存储在临时文件夹中 但现在 当我在响应标头中添加这些属性时 我看不到缓存行为的任何变化 所有内容都像以前一样被存储 即使我在 js 文件中进
  • Thymeleaf:我可以在表达式中使用消息吗

    我在 Spring Boot 应用程序中使用 Thymeleaf 3 目前 我想在 EL 表达式 Spring EL 中使用消息表达式 第一个用例 修剪消息 data title message key trim 第二个用例 有条件地创建一
  • 如何停止工作表中的程序执行?

    如何在 Scala 工作表中停止程序执行 如果代码正在执行并且不返回 无限循环 那么似乎不可能在不重新启动 Eclipse 的情况下停止程序执行 From https github com scala ide scala worksheet
  • 如何在 Linux 中终止单个 TCP 连接?

    我有一个进程在不同的端口上打开到多个浏览器的多个 tcp 连接 使用 netsat 的输出是这样的 tcp 0 0 server1 something myprog client1 something 49987 ESTABLISHED t
  • jQuery DataTables - 启动缓慢,“正常”html 表显示在开头

    我正在使用 jQuery DataTable 插件 但我担心脚本加载似乎需要一些时间 所以我的网页总是首先显示普通的 html 表格 在所有脚本完成后 该表格将变成 DataTable 我觉得这种样子不太能接受 所以希望能在这里得到一些建议
  • 在 IOS 上启用语音时,移动菜单无法打开

    我正在使用 Safari 浏览器在 ios 中打开我的网站 移动菜单工作正常 当我点击菜单图标 三行图标 时它会打开 但是 当我启用语音然后进入浏览器并点击该菜单图标时 移动菜单未打开 这是CSS问题还是我必须添加一些aria属性 有人能帮
  • 将全局变量传递给类和函数的替代方法

    我是 python 新手 我一直在使用global将变量传递给其他函数被认为是新手 也是一种不好的做法 我想不再使用全局变量 但我不知道该怎么做 现在 我有一个在 wxPython 中创建的 UI 作为其自己的单独类 并且我有另一个从 in
  • 当我序列化对象时出现 StackOverflowError

    我想用这个方法序列化一个对象 public void serializ CRDT m throws IOException ByteArrayOutputStream byteOutput new ByteArrayOutputStream