完整的日志如下:
Invocation of init method failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew != null and ew.sqlSelect != null'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSelect [java.lang.NoSuchMethodError: net.sf.jsqlparser.expression.operators.relational.ExpressionList: method <init>()V not found]
查了下资料,有几种思路
1. 检查sql语句语法是否正确
这种语法问题,日志里会明确的告诉你,是值为空了,或者某属性不存在了,所以和我的问题应该不一样
2. jsqlparser版本冲突或版本不匹配导致的解析异常
我预感我的问题就是这个,在pom这里,这里如果没有这个依赖分析的tab,那可能是需要下载一个插件maven helper, 时间久远有点忘了
因为我这里已经改好了,所以会看到只有一个,当时是看到有两个,一个1.0,一个4.7版本的,我把这两个都排除掉了,参考如下
最后手动加一个2.1版本的,注意我的mybatis版本是2.1.9
刷新maven后启动ok,打包丢到Linux上也没问题了
还有个情况是,之前项目运行打包都是可以的,但是今天linux上打包运行报错了,这种情况大概率也是版本不匹配导致的,之前一直正常或许是强缓存吧