BUG库,列举我从今天开发遇到的BUG

2023-11-04

  1. java.lang.IllegalArgumentException: Invalid character found in the request target
    在请求目标中发现的无效字符
    方法请求体传入非法参数
    一般是前台的锅
  2. java.lang.IllegalArgumentException: object is not an instance of declaring class
    由于没有实例化可以有如下两种方法:
    1、反射方法定义成为static的,故被反射类就不需要实例化;
    2、
    method.invoke(class.getDeclaredConstructor().newInstance(), args); 
    

3、 我解决的方法,本方法不用静态的就可以了
你本方法是静态的,需要反射的方法不是静态的,所以反射执行反射方法的时候肯定还没有初始化对象。把两个方法改一致就行了
3. nested exception is redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
连接池中没有可用的jedis,没有正确关闭连接,连接池耗尽
properties文件里jedis的配置有问题,要么是写错了,要么是没设置好端口
增大连接数
4. nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘param’ in ‘class vip.xiaonuo.modular.safety.risk.param.SafetyRiskParam’
在这里插入图片描述找不到get方法,
当时在mapper层用的重载,想起来不能用,写了两个方法
5. java.io.IOException: 你的主机中的软件中止了一个已建立的连接
表单重复提交。
由于客户端在发送请求后,还没等服务器响应就断开了连接,有可能是因为网络原因,突然网断了,但是如果错误频繁出现的话,可能就是服务端的问题了。

有可能是后台处理时间太长了。

服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉。

客户关掉了浏览器,而服务器还在给客户端发送数据。
  1. java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
    经典异常:数组下标越界,数组里没有足够多的数据
  2. Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error Type referred to is not an annotation type:xxx
    AOP中切点写错了
    在这里插入图片描述
  3. sql_mode=only_full_group_by
    在mysql执行查询分组过滤语句的时候报错
    原因:
    select 后面跟的字段没有全部在group by 中
    SELECT、HAVING、ORDER后的非聚合字段必须和GROUP BY后的字段保持完全一致
    解决方法:
    数据库配置文件中增加一行配置:配置要写在[mysqld]下面,否则不生效
    sql-mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

这是mysql5.7版本以后才会有的设置,需要编辑配置文件或者修改sql语句
9. Invalid bound statement (not found)
我知道这个报错是应为mapper.xml文件没有扫描到
于是我先看了xml的namespace是否有误,又看了mybatis的mapper-locations配置。
发现均无问题。
后来我看了target文件目录下,生成的class文件没有xml文件,知道打包没有将xml文件打包进去。pom文件资源打包拦截配置放开即可

   <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
  1. java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    原因:
    连不上mysql数据库了
  2. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory$EnhancedResultObjectProxyImpl and no properties discovered to create BeanSerializer
    原因:
    是我在mybatis中用了这样的写法
  <resultMap id="userRecord" type="vip.xiaonuo.modular.safety.train.exam.entity.vo.ExamUserListVO">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="brand" column="brand"/>
        <result property="phone" column="phone"/>
        <collection property="scoreVOList"
                    ofType="vip.xiaonuo.modular.safety.train.exam.entity.vo.ExamUserScoreVO"
                    select="selectUserScore"
                    column="{trainUserId=id,examId=examId}"/>
    </resultMap>

mybatis配置懒加载导致RestController或responsebody返回对象Jackson解析失败
解决方法
在实体类前,即你返回需要jackson解析的类,前面添加注解,让Jackson序列化时忽略handler属性

@Data
@JsonIgnoreProperties(value = "handler")
public class ExamUserListVO {
    private Long id;
    private String name;
    private String brand;
    private Integer phone;

    private List<ExamUserScoreVO> scoreVOList;
  1. Statement cancelled due to timeout or client request
    sql执行时间过长,超过客户端连接时间
    解决方法:
    连接数据库是增加参数:queryTimeout=3000,不行再增加
    优化查询,使用索引,排序操作可以放在内存中排序

  2. IORuntimeException
    IO运行时异常,常用于对IOException的包装

  3. java.io.EOFException: Unexpected EOF read on the socket
    原因:
    前端mock把requestBody给消费掉了,导致传到后端没有body,后端在解析的时候发现request请求头的content-length是59,就一直等待接收数据,与此同时,前端也在等待后端返回结果。1分钟后,前端等待超时,前端发EOF请求(具体为何会发EOF还需要进一步学习),后端收到以后,发现和预期的消息不一致,就报了EOF这个错误。
    解决方法:
    让前端改

  4. class path resource [xx] cannot be resolved to absolute file path because it does not reside
    原因:
    在springBoot下放入静态文件,编译器运行测试时可以拿到,一打成jar文件就报错
    这是因为:在jar文件中,不能直接通过文件资源路径拿到文件,但是可以在jar包中拿到文件流。(一定要用流,不要尝试去拿到绝对路径,否则报错!
    解决方法:
    之前的写法:

  @Override
    public void exportTemplate(HttpServletResponse response) {
        // 读取本地的文件
        String filePath = "/template/金鹰安全-隐患导入模板.xlsx";
        ClassPathResource readFile = new ClassPathResource(filePath);

        // 获取文件对象
        File file = null;
        try {
            file = readFile.getFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 获取文件流
        DownloadUtil.download(file, response);
    }

所以改变写法:

   @Override
    public void exportTemplate(HttpServletResponse response) {
        String filePath = "/template/金鹰安全-隐患导入模板.xlsx";
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
            org.springframework.core.io.Resource[] resources = resolver.getResources(filePath);
            org.springframework.core.io.Resource resource = resources[0];
            InputStream stream = resource.getInputStream();

            File file = new File(filePath);
            FileUtils.copyToFile(stream, file);
            DownloadUtil.download(file, response);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  1. org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class vip.xiaonuo.core.pojo.response.ErrorResponseData] with preset Content-Type ‘video/mp4’
    原因:
    请求Content-type 未传入或者与返回的response的Content-type不一致
    解决方法:
    将请求的Content-type 与返回的Content-type 保持一致
  2. org.springframework.web.multipart.MultipartException: Current request is not a multipart request
    前端需要把Content-Type设置成multipart/form-data或着去掉Content-Type
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BUG库,列举我从今天开发遇到的BUG 的相关文章

随机推荐

  • zookeeper环境构建

    关于zookeeper的作用这里不再作详述 相信很多开发人员在很多场景都使用zookeeper作为任务协调 1 安装jdk 这里不述详述 下载jdk压缩包 并在 etc profile中增加相关的环境变量配置 export JAVA HOM
  • python各个版本区别_Python 的各个版本

    Python 现在用的最多的就是两个版本 Python 2 x 系列 以及一个较新的 Python 3 x 系列 Python 3 x 系列是开始于2008年的十二月的 3 0 版本 从这个版本发布开始 Python 2 7 之后就只有小版
  • 解决Jetbrains旗下产品的插件下载失败问题(IntelliJ IDEA、RubyMine、WebStorm、PhpStorm、PyCharm、AppCode、Android Studio等)

    博主主要关注IntelliJ IDEA插件 使用时安装超时 解决办法其实很简单 进入Jetbrains官方插件仓库地址 https plugins jetbrains com 选择你所用的开发工具 然后在左上角搜索框搜索你需要的插件 搜索后
  • JDK1.8 之Stream API总结

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Stream是 Java 8新增加的类 用来补充集合类 Stream代表数据流 流中的数据元素的数量可能是有限的 也可能是无限的 Stream和其它集合类的区别在于 其它集
  • mysql insert into多条_MySql中使用INSERT INTO语句更新多条数据的例子

    我们知道当插入多条数据的时候insert支持多条语句 复制代码 代码如下 INSERT INTO t member id name email VALUES 1 nick nick 126 com 4 angel angel 163 com
  • 如何解决:FileNotFoundError: 以及[Errno 2]No such file or directory

    出错原因 因为种种问题系统无法找到对应路径的文件 案例如下 我在pycharm的目录下新建了一个apple txt文件 想通过open 获取到对应文件里面的内容 结果提示 Errno 2 No such file or directory
  • Spark环境搭建部署全流程(Linux),看这一篇就够了

    前言 本篇文章将给各位展示如何快速地在linux上搭建spark 本文搭建的环境为Vmware 16 pro 下的CentOS 7 linux hadoop版本为3 x以上 Jdk1 8 以下是我总结出的spark几种模式的部署流程 如果是
  • 原来游戏技术行业最大的秘密竟然是...

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯游戏云发表于云 社区专栏 本篇文章主要是分享游戏业务面临的安全风险场景 以及基于这些场景的特点 我们应该如何做好对应的防护 一 背景 游戏行业DDoS攻击愈演愈烈 2017
  • Python模块multiprocessing & 实现多进程并发

    简介 multiprocessing模块是Python标准库中提供的一个用于实现多进程编程的模块 它基于进程而不是线程 可以利用多核CPU的优势 提高程序的执行效率 同时也可以实现进程间通信和数据共享 目录 1 参数说明 1 1 Proce
  • FastAPI从入门到实战(12)——错误处理

    错误提示是非常重要的 比如权限控制 资源控制等场景 需要服务器返回给用户错误提示 包括状态码和提示等内容 所以本文就主要记录FastAPI里的错误处理相关的内容 抛出一个HTTPException app08 get stu08 id de
  • UE 5 实现骨骼物理模拟 乳摇

    打开角色的物理资产 如果是下载的或者官方的模型 都会内带物理资产 模拟 可以根据分块模拟当前物体的物理效果 点击右上角的模拟 可以模拟布娃娃系统 Ctrl 鼠标右键可以实现对布娃娃施加力的效果 模拟选中项 模拟选中项可以只模拟一部分物体 选
  • 性能监控工具-Grafana安装和使用方法

    Grafana是一款开源的数据可视化和监控平台 它提供了丰富的可视化方式 如图表 仪表盘 警报等 支持多种数据源 包括Prometheus InfluxDB Graphite等 适用于各种规模的系统监控和数据分析 Grafana还有一个强大
  • ef框架 动态切换数据源信息(切换连接字符串)

    在一些特殊的场景 我可能会更换访问的数据库 猜想 玩游戏的时候 选择不同的区登录 选区就是更换数据库 比如你用qq登录王者 可登录1区或者2区 两个区中 你的英雄 皮肤 和段位是不一样的 上下文的调整 1 在上下文中加入一个静态的字段 pr
  • mysql重置数据库主键_重置Mysql主键的方法

    方法一 如果曾经的数据都不需要的话 可以直接清空所有数据 并将自增字段恢复从1开始计数 truncate table 表名 方法二 dbcc checkident table name reseed new reseed value 当前值
  • 数据库:关系模型基本介绍

    关系模型研究什么 关系模型就是处理Table的 它由三个部分组成 1 描述DB各种数据的基本结构形式 2 描述Table与Table之间所可能发生的各种操作 关系运算 3 描述这些操作所应遵循的约束条件 完整性约束 就是要学习 Table如
  • 深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型

    深度学习工程实践 6 使用pytorch训练自己的眼球分割模型 1 概述 2 目标 3 工程实践 3 1 数据寻找 数据标注 3 2 训练 3 3 部署应用到桌面程序 4 总结 1 概述 眼球分割 如果是在特定的眼球拍摄场景下 实际上直接用
  • mysql 视图

    目录 1 视图简介 1 1 视图的含义 1 2 视图的作用 2 创建视图 2 1 创建视图的语法形式 2 2 在单表上创建视图 2 3 在多表上创建视图 3 查看视图 3 1 DESCRIBE语句查看视图基本信息 3 2 SHOW TABL
  • 上海马普计算机考研,【分享】马普所博士研究生计划 - 计算模拟 - 小木虫 - 学术 科研 互动社区...

    马普所博士研究生计划 今年五月起 研究计划 膜与蛋白质及粒子的相互作用 将Monte Carlo与分子动力学以及理论计算相结合 研究吸附或包埋的蛋白质与粒子对生物膜物理相行为的影响 强调模型体系的生物意义 导师介绍 Thomas Weikl
  • 提高代码质量:代码审查

    在项目开发中 代码质量是非常重要的一环 高质量的代码对项目完成质量 能否按时完工有重大影响 而一个团队中开发成员的配置往往是金字塔形的 基于开发成本考虑 项目主管或小组长一般由经验丰富的资深高级程序员担任 开发成员则由普通程序员 新员工 实
  • BUG库,列举我从今天开发遇到的BUG

    java lang IllegalArgumentException Invalid character found in the request target 在请求目标中发现的无效字符 方法请求体传入非法参数 一般是前台的锅 java