Jump to content
We've recently updated our Privacy Statement, available here ×

Help for NullPointerException in a Servlet


maurozambito

Recommended Posts

Hi, my names is Mauro and I'm an italian newbie Java developer. I develop a web application, and I create a servlet that try to load a file .jasper. This is my code:

public class TestReport2 extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response){
        try {
            File f= new File("C:/prg/iReport/test4.jasper");
            FileInputStream in = new FileInputStream(f);
            JasperReport report = (JasperReport) JRLoader.loadObject(in);
            System.out.println("Report caricaton");
            JasperPrint print =JasperFillManager.fillReport(report, new HashMap(), new JREmptyDataSource());
           
            JasperExportManager.exportReportToPdfFile(print, "C:/prg/iReport/test4.pdf");
            System.out.println("Report esportaton");
          
        } catch (JRException ex) {
            ex.printStackTrace();
        } catch(FileNotFoundException ex){
            ex.printStackTrace();
        }
    }

 

But I have the following exception:

GRAVE: Servlet.service() for servlet TestServlet2 threw exception
java.lang.NullPointerException
        at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
        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 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:192)
        at it.maurozambito.maurolog.test.TestReport2.doGet(TestReport2.java:36)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)
 

I don't understand the Exception cause. Can you help my, please

Thanks, and sorry for my bad english.

 

Link to comment
Share on other sites

  • Replies 2
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

I don't know if this is the solution for your problem but I had simular problems.

Place your jasper file in the web/WEB-INF folder en call the file from there.

Included my code for a servlet (not to PDF file but to browser).

 

Code:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        try {            ServletOutputStream servletOutputStream = null;            servletOutputStream = response.getOutputStream();                  File reportFile = new File(getServletConfig().getServletContext().getRealPath("/WEB-INF/factuurzonderlijnen.jasper"));            byte[] bytes = null;                                   bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),                aanmakenParameters(fp),new HashMap(), new JREmptyDataSource());                                 response.setContentType("application/pdf");                response.setContentLength(bytes.length);                servletOutputStream.write(bytes, 0, bytes.length);                        servletOutputStream.flush();                servletOutputStream.close();            } catch (Exception e) {                StringWriter stringWriter = new StringWriter();                PrintWriter printWriter = new PrintWriter(stringWriter);                e.printStackTrace(printWriter);                response.setContentType("application/pdf");                response.getOutputStream().print(stringWriter.toString() + e.toString());            }        }
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...