title: Getting "Error loading object from InputStream" exception during call JasperRunManager.runReportToPdfStream
body: <p>I'm trying to generate pdf via button but my problem is this method
  <code>JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream, new HashMap&lt;Object, Object&gt;(), resultSetDataSource);</code></p>
  
  <p>it is not supporting Hashmap it gives following error</p>
  
  <pre><code>The method runReportToPdfStream(InputStream, OutputStream, Map&lt;String,Object&gt;, Connection) in the type JasperRunManager is 
   not applicable for the arguments (InputStream, ServletOutputStream, HashMap&lt;Object,Object&gt;, JRResultSetDataSource)
  </code></pre>
  
  <p>it Supports String parameter like <code>Hashmap&lt;String,Object&gt;</code> while generating pdf it gives following error</p>
  
  <pre><code>net.sf.jasperreports.engine.JRException: Error loading object from InputStream
      at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:219)
      at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:632)
      at net.sf.jasperreports.engine.JasperRunManager.runToPdfStream(JasperRunManager.java:428)
      at net.sf.jasperreports.engine.JasperRunManager.runReportToPdfStream(JasperRunManager.java:849)
      at com.p41.jasper.Jasper.doPost(Jasper.java:103)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
      at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
      at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
      at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
      at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:546)
      at com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:364)
      at com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154)
      at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at com.p41.setting.FacesFilter.doFilter(FacesFilter.java:153)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
  Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D
      at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
      at java.io.ObjectInputStream.&lt;init&gt;(Unknown Source)
      at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.&lt;init&gt;(ContextClassLoaderObjectInputStream.java:53)
      at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:214)
  </code></pre>
  
  <p>Servlet</p>
  
  <pre><code>import java.io.File;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.PrintWriter;
  import java.io.StringWriter;
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.ResultSet;
  import java.sql.Statement;
  import java.util.HashMap;
  import java.util.HashSet;
  
  import javax.servlet.ServletException;
  import javax.servlet.ServletOutputStream;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
  import net.sf.jasperreports.engine.JRResultSetDataSource;
  import net.sf.jasperreports.engine.JasperRunManager;
  
  public class Jasper extends HttpServlet {
      private static final long serialVersionUID = 1L;
  
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      }
  
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          Connection connection;
          Statement statement;
          ResultSet resultSet;
          response.setContentType("text/html");
          String si = request.getParameter("input");
  
          ServletOutputStream servletOutputStream = response.getOutputStream();
  
          byte[] bytes = null;
  
          InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("WEB-INF/HR/Jasp.jasper");
          System.out.println("Print" + si);
          try {
              System.out.println("Second print" + si);
  
              String query = "SELECT  Where Empno = '" + si + "' ";
              Class.forName("com.mysql.jdbc.Driver");
              connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/schemedb?user=root&amp;password=root");
              statement = connection.createStatement();
              resultSet = statement.executeQuery(query);
              JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(resultSet);
  
              response.setContentType("application/pdf");
  
              servletOutputStream.flush();
              servletOutputStream.close();
  
              System.out.println("print" + reportStream);
              System.out.println("print" + servletOutputStream);
              System.out.println("print" + resultSetDataSource);
              JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, new HashMap&lt;Object, Object&gt;(), resultSetDataSource);
  
              resultSet.close();
              statement.close();
              connection.close();
              response.setContentType("application/pdf");
              servletOutputStream.flush();
              servletOutputStream.close();
          } catch (Exception e) {
              StringWriter stringWriter = new StringWriter();
              PrintWriter printWriter = new PrintWriter(stringWriter);
              e.printStackTrace(printWriter);
              response.setContentType("text/plain");
              response.getOutputStream().print(stringWriter.toString());
          }
      }
  }
  </code></pre>