Jump to content
  • Unable to evaluate expression due to ClassCastException


    jbodkin
    CategoryBug report
    PriorityUrgent
    ReproducibilityAlways
    ResolutionNo Change Required
    SeverityCritical
    StatusClosed
    Versionv6.0.4

    JasperStudio is breaking when trying to preview a report. It attempts to evaluate an expression and throws a ClassCastException.

    I've added the relevant libraries to the classpath within the Project settings.

     

    net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: $F{retailItemOutlet} != null

    at com.jaspersoft.studio.editor.preview.view.control.ReportControler.fillReport(ReportControler.java:506)

    at com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$20(ReportControler.java:481)

    at com.jaspersoft.studio.editor.preview.view.control.ReportControler$5.run(ReportControler.java:362)

    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

    Caused by: net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: $F{retailItemOutlet} != null

    at net.sf.jasperreports.components.list.VerticalFillList.prepare(VerticalFillList.java:149)

    at net.sf.jasperreports.engine.fill.JRFillComponentElement.prepare(JRFillComponentElement.java:150)

    at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:330)

    at net.sf.jasperreports.components.list.FillListContents.prepare(FillListContents.java:85)

    at net.sf.jasperreports.components.list.VerticalFillList.fillContents(VerticalFillList.java:163)

    at net.sf.jasperreports.components.list.VerticalFillList.prepare(VerticalFillList.java:110)

    at net.sf.jasperreports.engine.fill.JRFillComponentElement.prepare(JRFillComponentElement.java:150)

    at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:330)

    at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:382)

    at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:357)

    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2031)

    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:755)

    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:262)

    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:122)

    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:551)

    at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:119)

    at java.lang.Thread.run(Unknown Source)

    Caused by: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: $F{retailItemOutlet} != null

    at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:264)

    at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:610)

    at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:578)

    at net.sf.jasperreports.engine.fill.JRFillDataset.evaluateExpression(JRFillDataset.java:1832)

    at net.sf.jasperreports.components.list.FillDatasetRun.evaluateDatasetExpression(FillDatasetRun.java:234)

    at net.sf.jasperreports.components.list.BaseFillList$1.evaluate(BaseFillList.java:90)

    at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:1015)

    at net.sf.jasperreports.engine.fill.JRFillElement.evaluatePrintWhenExpression(JRFillElement.java:794)

    at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:550)

    at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)

    at net.sf.jasperreports.components.list.FillListContents.evaluateContents(FillListContents.java:78)

    at net.sf.jasperreports.components.list.VerticalFillList.prepare(VerticalFillList.java:109)

    ... 16 more

    Caused by: java.lang.ClassCastException: com.mbplc.cborms.model.step.RetailItemOutletPrice cannot be cast to com.mbplc.cborms.model.step.RetailItemOutletPrice

    at mbplc_item_1430915491677_249096.evaluate(mbplc_item_1430915491677_249096:178)

    at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:251)

    ... 27 more



    User Feedback

    Recommended Comments

    Changed Status from New to Feedback Requested


    This kind of ClassCast error is related to a problem with classloaders. Can you show how your project is configured? It would be nice to create a screencast, maybe using something like Jing.Better, if possible, attach the broken project + sample report here. Thanks.Regards,Massimo.
    Link to comment
    Share on other sites

    Changed Status from Feedback Requested to Acknowledged


    Hello Massimo,I've investigated further and I've found the source of the problem. During preview mode, I've created a data adapter based on a Collection of JavaBeans. Within the configuration dialog for this adapter, I've added the dependencies on my jar files. I've also added the dependencies on my project.Therefore, when the engine is attempting to render the preview, it has two copies of my dependencies on the class path. One from the adapter, one from the project. Removing the dependencies from the adapter allows the preview to generate correctly.There is a slight improvement where the adapter and project classpath could be merged to resolve duplicate dependencies however I've managed to resolve my issue. Therefore I'll leave it up to you if the improvement is worth implementing.Regards,James
    Link to comment
    Share on other sites

    Changed Resolution from Open to No Change Required

    Changed Status from Acknowledged to Closed


    Yes James, this is a likely scenario that could lead to a similar error.Glad you were able to spot the issue by yourself.Regards,Massimo.P.S: I will briefly talk with the other guys and see about a possible improvement in terms of "merging" possible duplicated dependencies. Anyhow it's a quite complicated matter.
    Link to comment
    Share on other sites

    Hi jbodkin, i am face the same problem here. And unfortunately i cannot remove the reference to the jar from the Data Adapter.

     

    When i do that, i get a net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRException: java.lang.reflect.InvocationTargetException Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager

     

    I am using a JavaBeanDatasource on my dataAdapter and my Factory Class uses a Persistence Unit(JPA) to retrieve me the Collection.

    OBS:. Using Hibernate 5.0 as JPA implementation.

     

    Do you have any suggestion? thanks..

    Link to comment
    Share on other sites


×
×
  • Create New...