Well, I had the same problem yesterday, and my solution was the next: I put the next code into my java reporter: String reportsDirPath =getServlet().getServletContext().getRealPath("/")+"path_to_my_report_folder" ; File reportsDir = new File(reportsDirPath); if (!reportsDir.exists()) { try { throw new FileNotFoundException(String.valueOf(reportsDir)); } catch (FileNotFoundException e) { e.printStackTrace(); mapping.findForward("/InternalError.do"); } } HashMap<String,Object> hm = new HashMap<String,Object>(); hm.put(JRParameter.REPORT_FILE_RESOLVER, new SimpleFileResolver(reportsDir)); Width this code I pass the path to my report template (the images are in the same directory) and then, when I compile the template, the location is correct. Then into jasperreport template, I only needs put the next to locate an image <image> <reportElement x="45" y="52" width="55" height="36"/> <imageExpression class="java.lang.String"><![CDATA["usc.jpeg"]]></imageExpression> </image>