Jump to content

BLOB Image Display Issue - URGENT PLS HELP


sheshkrish

Recommended Posts

Hi,

I am newbie to using iReports tool.

i have to display a BLOB field from my ORACLE Database on a report.

I have declared the field as java.lang.Object Type

and i have an image field : with this expression:net.sf.jasperreports.engine.util.JRImageLoader.loadImage((byte[])$F{LOT_LETTERCONDITION_DTL_CONDIT})

where LOT_LETTERCONDITION_DTL_CONDIT is my BLOB field

and the expression tyep is: java.awt.Image

The report compiles fine - but throws a run-time error giving a CLASSCASTEXCEPTION

the exact error being --> Caused by: java.lang.ClassCastException: oracle.sql.BLOB cannot be cast to [b 

 Kindly help me in solving this issue.

Thanks in advance!

Shesh.

------------------------------------------------------------------------

ALSO, this is my log trace:

Error filling print... Error evaluating expression : 
    Source text : net.sf.jasperreports.engine.util.JRImageLoader.loadImage((byte[])$F{LOT_LETTERCONDITION_DTL_CONDIT})
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
    Source text : net.sf.jasperreports.engine.util.JRImageLoader.loadImage((byte[])$F{LOT_LETTERCONDITION_DTL_CONDIT}) 
    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.JRFillImage.evaluateImage(JRFillImage.java:890) 
    at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:871) 
    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:1380) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:692) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:255) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:113) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:879) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:782) 
    at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) 
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) 
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234) 
    at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:947) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassCastException: oracle.sql.BLOB cannot be cast to [b 
    at BLOB_Test_1220341222878_154476.evaluate(BLOB_Test_1220341222878_154476:164) 
    at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:186) 
    ... 18 more 
Print was not filled. Try using an EmptyDataSource...
 

 

Link to comment
Share on other sites

  • Replies 10
  • Created
  • Last Reply

Top Posters In This Topic

Hi Hangman,

Thanks for taking out time - to reply to my issue.

Unfortunately, the solution provided by you - did not work out for me.

This is the error that is generated after i have both input field and image expression as :

java.io.InputStreamError exporting print...Image read failed. net.sf.jasperreports.engine.JRException: Image read failed. 
    at net.sf.jasperreports.engine.util.JRJdk14ImageReader.readImage(JRJdk14ImageReader.java:77) 
    at net.sf.jasperreports.engine.util.JRImageLoader.loadImage(JRImageLoader.java:274) 
    at net.sf.jasperreports.engine.JRImageRenderer.getImage(JRImageRenderer.java:354) 
    at net.sf.jasperreports.engine.JRImageRenderer.getOnErrorRendererForImage(JRImageRenderer.java:307) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportImage(JRPdfExporter.java:1198) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:675) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:641) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:536) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:344) 
    at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:1516) 
    at java.lang.Thread.run(Unknown Source) 

 

Link to comment
Share on other sites

  • 1 month later...

1.set your field class type:                         java.io.InputStream

2. Write Image Expression :                      JRImageLoader.loadImage((byte [ ] )(JRImageLoader.loadImageDataFromInputStream($F{logo})))   where logo is your image field name

3.Image Expression Class :                     java.awt.Image

Its works for Oracle 9i.

hope u can do that.

with best regards

A S M Russel

Code:
1.set your field class type:    java.io.InputStream2. Write Image Expression :     JRImageLoader.loadImage((byte [ ] )(JRImageLoader.loadImageDataFromInputStream($F{logo})))   where logo is your image field name3.Image Expression Class :      java.awt.Image
Link to comment
Share on other sites

  • 1 month later...

works like a gem!!

hey asmrussel, thx a lot ... this thing was bothering me for a long time now - and with our inputs - i could get it to work

i really don't know - what i was doing wrong earlier - or rather the approach was wrong itself

i even tried it with Oracle 10g, which my application demands, and it seems to be working fine :)

 

just for my knowledge - and i have just jumped into jasper - what was the error in the previous code?

again - thx a lot!!

 

Cheers and all the very best,

Shesh.

Link to comment
Share on other sites

  • 4 years later...

Hai

I have saved image in my oracle data base as BLOB. My model class contains byte[] image; corresponding to the BLOB feild in database.I want to show the image in report.

I created jrxml as said earlier in this thread.But I am getting an exception 

 

Caused by: java.lang.ClassCastException: [b cannot be cast to java.io.InputStream
at ImageReport_1374298694162_246463.evaluate(ImageReport_1374298694162_246463:171)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:231)
 
Thanks in advance
Varghese
Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...
Hi,

I have followed the all step, but still i got he below error... plz help

 

net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 

Source text : JRImageLoader.loadImage((byte [ ] )(JRImageLoader.loadImageDataFromInputStream($F{HM_Logo})))

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

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

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

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

at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:460)

at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:441)

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

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

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:327)

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

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

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

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

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:378)

at com.locohire.asha.common.ReportEngine.generateReport(ReportEngine.java:41)

at com.locohire.asha.action.core.MedicineIssueAction.createMedBill(MedicineIssueAction.java:384)

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.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)

at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)

at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)

at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)

at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)

at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)

at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)

at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)

at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)

at com.locohire.asha.common.MyActionServlet.doPost(MyActionServlet.java:115)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)

at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)

at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)

at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)

at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)

at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)

at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)

at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)

at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)

at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)

at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)

at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)

at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)

at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)

at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)

at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)

at com.sun.grizzly.ContextTask.run(ContextTask.java:71)

at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)

at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)

at java.lang.Thread.run(Thread.java:619)

Caused by: groovy.lang.MissingPropertyException: No such property: JRImageLoader for class: medical32bill_1383122918154_326648

at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:49)

at org.codehaus.groovy.runtime.callsite.GetEffectivePogoPropertySite.getProperty(GetEffectivePogoPropertySite.java:86)

at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:239)

at medical32bill_1383122918154_326648.evaluate(calculator_medical32bill_1383122918154_326648:302)

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

... 60 more

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...