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()); } }