hudengzhu 2023-04-11 19:30 采纳率: 71.4%
浏览 16
已结题

关于文件反序列化的问题


public static void main(String[] args)  {
    File dir = new File(".");
    File[]  subs = dir.listFiles((f)->f.getName().endsWith(".obj"));
    for (int i = 0; i < subs.length; i++) {
        try {
            File sub=subs[i];
            FileInputStream fis = new FileInputStream(sub);
            ObjectInputStream ois = new ObjectInputStream(fis);
            Object obj = ois.readObject();
            User use = (User)obj;
            System.out.println(use);
        } catch (IOException |ClassNotFoundException e) {
            e.printStackTrace();
        }

    }
}


}

如上,执行当前文件目录下的.obj文件反序列化时会出现异常报错

img

  • 写回答

1条回答 默认 最新

  • Leodong. 2023-04-11 20:36
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

    根据你提供的截图,可以看到反序列化时出现了 java.lang.ClassNotFoundException 异常,这个异常通常是由于未找到序列化对象的类定义导致的。在反序列化时,Java 需要根据序列化对象中的类名查找对应的类定义,如果类定义不存在,就会抛出 ClassNotFoundException 异常。

    你可以尝试检查你的代码中,序列化对象所引用的类是否存在,或者是否正确地导入了该类的定义。如果你使用的是第三方库或者框架,可能需要检查是否正确地配置了类路径。

    另外,在反序列化之前,建议先检查序列化对象的版本号是否与当前类定义的版本号匹配。如果版本号不匹配,反序列化可能会失败。你可以在序列化对象中添加版本号,例如:

    public class User implements Serializable {
        private static final long serialVersionUID = 1L;
        // ...
    }
    

    最后,建议在捕获 ClassNotFoundException 异常时,打印出更详细的错误信息,以便更好地了解问题。例如,你可以在捕获异常后,打印出异常消息和堆栈信息,如下所示:

    try {
        // 反序列化操作
    } catch (IOException | ClassNotFoundException e) {
        System.err.println("反序列化失败:" + e.getMessage());
        e.printStackTrace();
    }
    

    这样可以帮助你更好地了解问题,并找到解决方案。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月14日
  • 已采纳回答 4月14日
  • 修改了问题 4月11日
  • 创建了问题 4月11日

悬赏问题

  • ¥15 使用yolov5-7.0目标检测报错
  • ¥15 对于这个问题的解释说明
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备