百木园-与人分享,
就是让自己快乐。

【BUG记录】积木报表导出的时候出现了Blank expression的异常

一、概要

1、来源

  积木报表版本号:1.4.2

2、异常现象

  导出Excel失败

3、异常栈:

【BUG记录】积木报表导出的时候出现了Blank expression的异常【BUG记录】积木报表导出的时候出现了Blank expression的异常

com.googlecode.aviator.exception.CompileExpressionErrorException: Blank expression
at com.googlecode.aviator.AviatorEvaluatorInstance.compile(AviatorEvaluatorInstance.java:1419)
at com.googlecode.aviator.AviatorEvaluatorInstance.compile(AviatorEvaluatorInstance.java:1413)
at com.googlecode.aviator.AviatorEvaluatorInstance.compile(AviatorEvaluatorInstance.java:1400)
at com.googlecode.aviator.AviatorEvaluatorInstance.compile(AviatorEvaluatorInstance.java:1535)
at org.jeecg.modules.jmreport.desreport.express.b.a(ExpressUtil.java:262)
at org.jeecg.modules.jmreport.desreport.express.a.a(ExpressHandler.java:259)
at org.jeecg.modules.jmreport.desreport.express.a.a(ExpressHandler.java:172)
at org.jeecg.modules.jmreport.desreport.express.a.(ExpressHandler.java:78)
at org.jeecg.modules.jmreport.desreport.express.b.a(ExpressUtil.java:239)
at org.jeecg.modules.jmreport.desreport.service.a.e.show(JimuReportServiceImpl.java:3545)
at org.jeecg.modules.jmreport.desreport.service.a.e$$FastClassBySpringCGLIB$$4daca651.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
at org.jeecg.modules.jmreport.desreport.service.a.e$$EnhancerBySpringCGLIB$$959bd496.show()
at org.jeecg.modules.jmreport.desreport.service.a.k.a(JmReportExportExcelImpl.java:258)
at org.jeecg.modules.jmreport.desreport.service.a.k.a(JmReportExportExcelImpl.java:213)
at org.jeecg.modules.jmreport.desreport.service.a.k.exportExcel(JmReportExportExcelImpl.java:117)
at org.jeecg.modules.jmreport.desreport.a.a.b(DesignReportController.java:1069)

View Code

4、原因

  初步定位到的原因是:待导出的数据里面有单独的“=”

5、重现类型

  必现

二、修复进度(更新中

已通过在Github里提Issue(https://github.com/jeecgboot/JimuReport/issues/859)的方式通知了作者,且在官方QQ群进行了通知,等待回复中

三、摸查原因

导出所在页面是导出数据分页展示的地方,在翻页了几次之后,发现了特定页也会出现相同的Blank expression异常,因此怀疑是特殊字符导致的异常;从数据库找到对应页的数据,发现了只有“=”的数据,但是仍然不知道为啥“=”会引起异常;回到异常栈中,由于积木报表源码经过了混淆,无法直接定位到具体行,只能先定位到方法,通过查找AviatorEvaluatorInstance.compile被调用的地方,定位到了这里:

里面果然包含了“=”,这里把只有“=”的数据替换成空字符串,直接导致compile方法抛出Blank expression异常,测试如下:

 


来源:https://www.cnblogs.com/voyager-fu/p/16091838.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 【BUG记录】积木报表导出的时候出现了Blank expression的异常

相关推荐

  • 暂无文章