关于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,右边设置显示格式,完成后点击应用即可。
发表评论