Problema com o Servlet Ireport e Jasper

Tenho um teste que fiz com Jasper e Ireport que funcionou bacana. Conectou com o banco gerou o relatório e tudo mais. Quando fui colocar um servlet para apresentar este relatório na web começou o erro http 500 full stack trace.

A msg de erro do printStackTrace é:
net.sf.jasperreports.engine.JRException: java.lang.reflect.InvocationTargetException

Implementei um outro servlet em que o autor deste servlet testa se ele realmente carregou o arquivo.jasper e emite uma mensage dizendo que não conseguiu carregar. Pois então com este servlet também dá erro e esta mensagem aparece. Só que tenho certeza que o arquivo se encontra no caminho certo. Sabe o que pode ser? Agradeço a ajuda!

Abaixo meu código do primeiro e do segundo servlet:

PRIMEIRO:

package Relatorios;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.JasperReport;


public class Relatorios5 extends HttpServlet {
    public static Connection con;
    public static String banco = "revest"; // Nome do banco de dados
    public static String usuario = "aspi"; // Usuario do banco
    public static String senha = "supersecreto"; // Senha
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        
        String datainicial = request.getParameter("dataini");
        String datafinal = request.getParameter("datafim");
        conexao(); // Faz a conexão
// Na variavel pathJasper ficara o caminho do diretório para
// os relatórios compilados (.jasper)
        String pathJasper = getServletContext().getRealPath(
                "/WEB-INF/classes/Relatorios/") + "\";
// A variavel path armazena o caminho real para o contexto
// isso é util pois o seu web container pode estar instalado em lugares diferentes
        String path = getServletContext().getRealPath("/");
// Parametros do relatorio
        Map parametros = new HashMap();
// O único parametro que devemos passar é o PathRelAutores
// é o caminho pro RelAutores.jasper (que foi subtituido pelo
// valor fixo “D:/iReport-0.4.0/RelAutores.jasper”)
        parametros.put("DATAINI", datainicial);
        parametros.put("DATAFIM", datafinal);
        parametros.put("CAMINHO", pathJasper + "Soma.jasper");
        try {
// Aqui ele cria o relatório

//AQUI ELE DÁ ERRO
            /*JasperPrint impressao = JasperFillManager.fillReport(pathJasper
             
                    + "Faturamento.jasper", parametros, con);*/
/*// Grava o relatório em disco em pdf
            JasperManager.printReportToPdfFile(impressao, path
                    + "/Faturamento.pdf");
// Redireciona para o pdf gerado
            response.sendRedirect("Faturamento.pdf");*/
            
            //visualizar pelo jasperviewer
            JasperViewer.viewReport( pathJasper + "Faturamento.jasper", false );
        } catch (Exception e) {
            response.getWriter().println("Erro ao gerar o relatório: " + e);
            e.printStackTrace();
            
        }
    }
// Cria a conexão
    public void conexao() {
        try {
            if (con == null || con.isClosed()) {
                Class.forName("com.mysql.jdbc.Driver");
                con = DriverManager.getConnection(
                        "jdbc:mysql://192.168.3.5:3306/" + banco, usuario, senha);
            }
        } catch (Exception e) {
            System.out.println("não foi possível conectar ao banco ->");
            e.printStackTrace();
        }
    }
    protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
    throws ServletException, IOException {
        doPost(arg0, arg1);
    }
}

SEGUNDO:


package Relatorios; 

import java.io.File; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.util.HashMap; 
import java.util.Map; 

import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import net.sf.jasperreports.engine.JRException; 
import net.sf.jasperreports.engine.JRRuntimeException; 
import net.sf.jasperreports.engine.JasperFillManager; 
import net.sf.jasperreports.engine.JasperPrint; 
import net.sf.jasperreports.j2ee.servlets.BaseHttpServlet; 


/** 
* @author Teodor Danciu (teodord@users.sourceforge.net) 
* @version $Id: FillServlet.java,v 1.1 2006/04/22 07:51:16 teodord Exp $ 
*/ 
public class Relatorios6 extends HttpServlet { 


public static Connection con; 
public static String banco = "revest"; // Nome do banco de dados 
public static String usuario = "root"; // Usuario do banco 
public static String senha = "root"; // Senha 

public void doPost( 
HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 

ServletContext context = this.getServletConfig().getServletContext(); 

String datainicial = request.getParameter("dataini"); 
String datafinal = request.getParameter("datafim"); 
conexao(); 
response.setContentType("text/html"); 
PrintWriter out = response.getWriter(); 

try { 
String reportFileName = context.getRealPath("/Relatorios/Faturamento.jrxml"); 
File reportFile = new File(reportFileName); 

//AQUI DÁ O ERRO, mas o arquivo está lá com certeza... 
if (!reportFile.exists()) 
throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first."); 

Map parametros = new HashMap(); 

parametros.put("DATAINI", datainicial); 
parametros.put("DATAFIM", datafinal); 
parametros.put("CAMINHO", context.getRealPath("/Relatorios/soma.jrxml")); 

JasperPrint jasperPrint = 
JasperFillManager.fillReport( 
reportFileName, 
parametros, 
con 
); 

request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint); 
} catch (JRException e) { 
out.println("<html>"); 
out.println("<head>"); 
out.println("<title>JasperReports - Web Application Sample</title>"); 
out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"../stylesheet.css\" title=\"Style\">"); 
out.println("</head>"); 

out.println("<body bgcolor=\"white\">"); 

out.println("<span class=\"bnew\">JasperReports encountered this error :</span>"); 
out.println("<pre>"); 

e.printStackTrace(out); 

out.println("</pre>"); 

out.println("</body>"); 
out.println("</html>"); 
} 

out.println("<html>"); 
out.println("<head>"); 
out.println("<title>JasperReports - Web Application Sample</title>"); 
out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"../stylesheet.css\" title=\"Style\">"); 
out.println("</head>"); 

out.println("<body bgcolor=\"white\">"); 

out.println("<span class=\"bold\">The compiled report design was successfully filled with data.</span>"); 

out.println("</body>"); 
out.println("</html>"); 
} 


public void conexao() { 
try { 
if (con == null || con.isClosed()) { 
Class.forName("com.mysql.jdbc.Driver"); 
con = DriverManager.getConnection( 
"jdbc:mysql://192.168.3.5:3306/" + banco, usuario, senha); 
} 
} catch (Exception e) { 
System.out.println("não foi possível conectar ao banco ->"); 
e.printStackTrace(); 
} 
} 
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) 
throws ServletException, IOException { 
doPost(arg0, arg1); 
} 
}