关于jasper报错net.sf.jasperreports.engine.fill.JRExpressionEvalException




今天碰到一个bug,报错如下:

net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
        Source text : $F{frq1}
        at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:197)
        at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:537)
        at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:505)
        at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:826)
        at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:368)
        at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:353)
        at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:275)
        at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:426)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1198)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:598)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:231)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:106)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:879)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:801)
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
        at com.ztkj.his.zygl.zyquery.common.MyJasperFillManagerZynurse.fillReport(MyJasperFillManagerZynurse.java:610)
        at com.ztkj.his.zygl.zyquery.common.PrintJFrameZynurse.init(PrintJFrameZynurse.java:281)
        at com.ztkj.his.zygl.zyquery.common.PrintJFrameZynurse.<init>(PrintJFrameZynurse.java:309)
        at com.ztkj.his.zygl.zyquery.zynurseQuery.dialogs.DoctorExpenseWindow.doPrintAct(DoctorExpenseWindow.java:1948)
        at com.ztkj.his.zygl.zyquery.zynurseQuery.dialogs.DoctorExpenseWindow$3.widgetSelected(DoctorExpenseWindow.java:271)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
        at com.ztkj.his.zygl.zyquery.zynurseQuery.dialogs.DoctorExpenseWindow.open(DoctorExpenseWindow.java:214)
        at com.ztkj.his.zygl.zyqueryreport.views.OutPatientDetailView$15.widgetSelected(OutPatientDetailView.java:834)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
        at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at com.ztkj.frame.intro.Application.start(Application.java:47)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
Caused by: java.lang.ClassCastException: java.sql.Timestamp cannot be cast to java.lang.String
        at zynurseSecularAdviceFeeDetial_1268624745046_519283.evaluate(zynurseSecularAdviceFeeDetial_1268624745046_519283:469)
        at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:186)
        ... 51 more


报错提示:net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
        Source text : $F{frq1}

经查后发现,这个frq1在java代码里面是Date类型,而在ireport的jasper报表文件中定义了String类型,导致报错

处理方式:

1、用ireport将jasper报表文件打开;

2、在左边的文档结构中,选择“字段”,在里面找到“frq1”这个字段,双击,将字段类型设置为java.util.Date;

3、在报表界面的控件中,右键frq1对应的控件-选择属性,选择“文本字段”这个选项卡,将“文本字段表达式类”设置为java.util.Date;

以上解决报错。


附:日期显示格式修改

1、在报表界面的控件中,右键日期对应的控件-选择属性,选择“文本字段”这个选项卡,点击“模式”右边的“创建...”按钮,弹出模式编辑器;

2、在左边的类别中选择date,右边设置显示格式,完成后点击应用即可。


发表评论

    微笑 大笑 拽 大哭 奸笑 流汗 喷血 生气 囧 不爽 晕 示爱 卖萌 吃惊 迷离 爱你 吓死了 呵呵