苦报错久矣之:javax.validation.ValidationException: HV000183: Unable to load 'javax.el.ExpressionFactory'
这个报错真是前后折磨了我半年时间。
全文比较啰嗦,同样添加依赖后没法解决问题的你可以直接拉到文末结论。
先说背景:每当项目代码需要本地调试的时候,拉起项目就会出现此报错。
刚开始无所畏惧,报错嘛,网上肯定有前辈踩过坑,百度一搜,果然像这种场景的: 比比皆是。
内心OS:那就照着改依赖文件呗!
不过改之前内心还是犯嘀咕的:代码大家都是一个库fork出来的,都是用maven管理的,为啥别人pom文件不需要加额外依赖?
添加完依赖,import,继续拉起本地环境。
GG。
那应该不是这个问题,那会不会时我本地Tomcat的问题呢?
试了三个Tomcat版本,在tomcat lib目录下添加javax.el.jar包,删除servlet.jar等怪招也都试过,无果。
期间请教了几位大神帮忙定位,也没找到到底啥问题,也不好意思整天拉着别人帮忙定位问题╮(╯▽╰)╭
然后,我就放弃本地环境验证了,扑哧扑哧跑到开发环境替包验证去了⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
就这样相安无事的过了几个月。。。
然后,年后转战新项目,新项目处于初生牛犊状态,application里main方法直接拉起就能测了。
内心OS:这回本地调测轮到我了吧哈哈哈
然,卒
嗨,我反而有点头绪了。
新项目不需要tomcat容器,pom.xml中软件依赖是我自己升级确认的。
耳边开始盘旋~~
Once you eliminate the impossible, whatever remains, no matter how improbable, must be the truth.” - Sherlock Holmes
真相永远只有一个 -工藤新一
既然和容器和pom.xml没关系,剩下的再不可能也只能是真相了!
剩下啥呢?
编辑器我使用的idea,那就先从idea版本入手(没办法,CV选手只能摸索出真知)
将idea版本从2018.2.2升级到2019.3.2,拉起main,卒
嗨,那就不是编辑器的问题。
那还剩下啥呢?
JDK?
WHAT??jdk背后给我一刀?
内心一百个羊驼跑过
我JDK是1.8版本啊,和大家一样啊!
难道是小版本?
速去求证了下:鄙人jdk小版本1.8.1,别人不报错的是1.9.2.。。
怀着无比激动忐忑的心情,将jdk小版本升级至2.1.*(别问我为啥不和别人保持版本一致,我想试试)
然,拉起成功了。。。。。。
真的是JDK版本的锅
事后细想了下,应该是jdk中的javax.el.*.java不能匹配hibernate中的valide功能,具体代码细节待我分析后贴出来。
结论:验证下你本地的jdk版本,如果版本低,就升级吧!这是解决这个问题的另一个思路!