背景:
今天写了一堆代码,最后提交前运行项目发现报错
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
原因分析:
这个本来是一个比较简便的错误,可能是哪个集合的下标有问题,查不到数据,问题我添加的代码也没运行啥初始化的时候获取数据的操作,于是我看问题是指向我的一个XXXMapper.class,别的类在注入这个类的时候报错,我后面看注入的地方也没问题,后面重新删除这个mapper,重新新建(这个mapper没实现方法,排除编码影响),也不行,然后因为这个类是个空类没写方法的,所以也头大了,后面把全部注入的地方都删除了还是报错,说明是这个mapper初始化有问题,后面发现换了一个mapper指定的表的实体后报错就没了,所以是这个mapper指向的实体有问题,最后看这个实体找到原因了
这个TableField注解里面应该是对应的表字段
再运行就没保存了
总结:
只能说这个错误的地方和异常返回的信息差异太大了,我一开始没想到是这里的问题(因为mapper是空的,没想到里面的实体有问题,所以一直觉得这个mapper类有问题),再次提醒,写了一定代码后一定要启动测试一下,不然代码多的时候指不定哪里有问题