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

一、概要

1、来源

积木报表版本号:1.4.2

2、异常现象

导出Excel失败

3、异常栈:

【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群进行了通知,等待回复中

2022-04-18更新:

作者已经在1.5.0-beta版本中修复该bug,升级日志:http://www.jimureport.com/doc/log,还未验证

三、摸查原因

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

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

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

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

PS:后面又出现了由于业务数据包含特殊字符而导出报错的bug,见随笔:【BUG记录】积木报表导出数据出现JSON反序列化报错

Original: https://www.cnblogs.com/voyager-fu/p/16091838.html
Author: voyager_fu
Title: 【BUG记录】积木报表导出的时候出现了Blank expression的异常

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/571876/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Rabbitmq集群高可用部署详细

    序言 清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣。无奈工作使然,理想使然,我回到啦公司,敲起啦键盘,撸起啦代码,程序狗的世界一片黯…

    Java 2023年5月30日
    091
  • crudapi增删改查接口零代码产品成功案例之商会联盟卡项目

    crudapi增删改查接口零代码产品成功案例之商会联盟卡项目 简介 商会联盟卡项目主要通过免费领取会员卡的方式吸引会员去合作商家线下消费,通过会员卡买单可以享受打折福利,最终顾客得…

    Java 2023年6月6日
    0118
  • HIT软构博客8 软件构造中的异常

    java中的异常分为两大类:checked异常和unchecked异常。其中,unchecked又分为error和runtime异常。 Unchecked异常不需要try-catc…

    Java 2023年6月5日
    0101
  • springcloud feign配置

    feign: httpclient: # feign最大连接数 max-connections: 200 # feign单个路径的最大连接数 max-connections-per…

    Java 2023年5月30日
    0106
  • Eureka 服务注册与发现

    服务治理 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理。 在传统的 rpc 远程调用框架中,管理每个服务与服务之间依赖关系比较复杂…

    Java 2023年6月8日
    079
  • 项目全局异常处理

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月7日
    095
  • day42-反射01

    Java反射01 1.反射(reflection)机制 1.1反射机制问题 一个需求引出反射 请看下面问题: 根据配置文件 re.properties 指定信息,创建Cat对象并调…

    Java 2023年6月15日
    085
  • 【LEETCODE】74、第542.题 01 矩阵

    package array.medium; import java.util.ArrayDeque; import java.util.Deque; import java.uti…

    Java 2023年6月5日
    060
  • 深入理解mysql锁与事务隔离级别

    一、锁 1、锁的定义 锁即是一种用来协调多线程或进程并发使用同一共享资源的机制 2、锁的分类 从性能上分类:乐观锁和悲观锁 从数据库操作类型上分类:读锁和写锁 从操作粒度上分类:表…

    Java 2023年6月13日
    093
  • Java并发工具类-CounDownLatch

    背景 * Java1.5引入,随之一&#…

    Java 2023年6月5日
    080
  • 1.使用log4j

    1.pom文件导入 log4j log4j 1.2.17 2.resource下增加log4j配置文件 ### set log levels ### log4j.rootLogge…

    Java 2023年6月13日
    097
  • 微服务框架核心源码深度解析<<大厂学院完结>>

    Sentinel核心源码解析 Sentinel是分布式系统的防御系统。以流量为切入点,通过动态设置的流量控制、服务熔断等手段达到 保护系统的目的,通过服务降级增强服务被拒后用户的体…

    Java 2023年6月7日
    084
  • liunx配置nginx命令

    Original: https://www.cnblogs.com/ghjbk/p/11792046.htmlAuthor: ノGHJTitle: liunx配置nginx命令

    Java 2023年5月30日
    076
  • 公众号文章汇总

    JDK源码分析实战系列-ThreadLocal自旋锁-JUC系列Doug Lea文章阅读记录-JUC系列AQS源码一窥-JUC系列AQS源码二探-JUC系列AQS源码三视-JUC系…

    Java 2023年6月14日
    086
  • Java8新特性-Lambda表达式

    总结一下java8中的新特性 lambda&#x8868;&#x8FBE;&#x5F0F; Lambda是一个匿名函数,可以理解为一段可以传递的代码(将代码…

    Java 2023年6月8日
    079
  • Spring 拦截器

    拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行 作用: 在指定的方法调用前后执行预先设定的代码 阻止原始方法的执行 总…

    Java 2023年6月7日
    074
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球