zoukankan      html  css  js  c++  java
  • 解决SpringBoot在使用反序列化时遇到的类型转换异常

    应用场景:本人训练好了一个SVM的分类模型,在调用时,加载文件转换为LinearSVMModel(定义好的类)时,报出如下异常

    java.lang.ClassCastException
    出现这种情况的原因大致有三种:

    1. 文件的路径不对。
    2. 文件的内容并不是要转换的类序列化而成的。
    3. 也就是我出现的情况,当Springboot引入了DevTools依赖时,会出现该问题
            <!--热部署-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
            </dependency>
    

    就是这个热部署的原因,当使用SpringBoot 的 DevTools时,其实该工具是具有缓存效果的。当对象被序列化到缓存里时,当前应用的类加载器是C1,当你改变了一些代码或者配置文件的时候,DevTools 工具将会自动重新启动这个容器,并且创建一个新的类加载器 C2. 这时候调用这个具有缓存的方法时,缓存管理将会从缓存里找到该条缓存记录并进行反序列化操作。如果缓存库不考虑上下文的话,也就是没注意到类加载器的变化时,该对象将会有错误的类加载器。其实就是因上下文类加载器不同而产生这样的错误。

    删掉这个热部署后问题解决

  • 相关阅读:
    神武
    position 属性
    C# 工作区和窗口的属性名
    魔兽世界命令行
    Dota2一直 正在登录服务器的解决办法
    dota2交换物品
    Servlet的5种方式实现表单提交(注册小功能)
    JQuery的ajaxFileUpload的使用
    JS日期转换
    Tomcat7后台通过get接收数据处理乱码
  • 原文地址:https://www.cnblogs.com/yeyueweiliang/p/15614290.html
Copyright © 2011-2022 走看看