一直被这个问题困扰,发现只要使用thymeleaf的if和unless语法(其他更高级的语法和switch语法我没试),就会报这样的错误:
java.lang.classNotFoundException: ognl.AbstractMemberAccess
最开始认为是thymeleaf的问题,尝试了降级jar包都不行,后来发现是ognl的问题,升级降级也不行,就这样磨了一周。。。
终于今天受不了了,在小黄鱼上花钱找人解决这个问题,闲鱼上的大佬也是花了一个小时最终才解决,这问题对于新手来说太难解决了
问题描述:无法使用thymeleaf的if和unless语法,只要使用后台就报错:java.lang.classNotFoundException: ognl.AbstractMemberAccess
背景:javaweb开发,还没接触spring和maven
平台:windows IDEA
问题原因:多个项目/模块的ognl的jar包冲突
解决办法:
只设置一个library,多个项目模块add这个library即可,步骤如下:
1,打开项目模块设置,新建一个library,选择你的所有依赖jar包:
注:因为要导入好几个包,所以最后library的命名自动为第一个jar包
然后点击你要加入的模块(可以多选),然后点击ok
2,步骤2可以有两种方式
(1)第一种方式很简单,直接点击下面的problems:
点击fix,然后点击add,左后点击下面的ok即可
(2)第二种方式较麻烦,点击Artifacts,选择你的模块,右侧output layout,点击WEB-INF.lib:
选中lib后点击上面的加号,新增library file:
点击选中你的library,点击ok
效果如下:
3,完成
如果后面新增了模块,直接Add to modules:
然后点击problems,再点击对应项目的fix: