Italo,
o arquivo testando.jasper existe? Voce sabe que o arquivo de modelo do jasperreport possui extensao jrxml, e que e necessario compilar para ele se tranformar num arquivo com extensao jasper, correto?
Caso o arquivo exista, verifique se o caminho esta correto, pois na mensagem de erro o caminho informado esta diferente do que voce postou.
De qualquer forma, como voce quer gerar o relatorio atraves de uma aplicacao web, o metodo “printReportToPdfFile” nao seria o mais adequado, visto que este metodo gera um arquivo fisicamente no disco. Imagine varios usuarios gerando o relatorio ao mesmo tempo. Como o nome do arquivo e o mesmo, ele ficara sempre sobrescrevendo o mesmo, e pode ocorrer de um usuario visualizar o relatorio de outro, ou dar exception no servlet pois o arquivo pode estar alocado para um usuario e por isso o jasperreport nao consegue sobrescreve-lo.
Abaixo envio o código de um exemplo que fiz gerando o relatorio atraves de stream:
package relatorio;
import java.io.*;
import java.net.URL;
import java.sql.*;
import java.util.HashMap;
import javax.servlet.*;
import javax.servlet.http.*;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
//DEPRECIADOimport net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
//DEPRECIADOimport net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
public class RelatorioProduto extends HttpServlet {
private static final String CONTENT_TYPE_PDF = "application/pdf";
private static final String driver = "org.firebirdsql.jdbc.FBDriver";
private static final String url = "jdbc:firebirdsql:localhost/3050:vendas";
private static final String login = "sysdba";
private static final String passwd = "masterkey";
//private Logger log;
public void init() throws ServletException {
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("Wait while loadding Report...");
// estabelece uma conexão JDBC
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, login, passwd);
} catch (SQLException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex2) {
ex2.printStackTrace();
}
/* Carrego um parametro que ira trazer o produto
* que possui a ID=1
*/
HashMap params = new HashMap();
params.put("idProduto", new Integer(1));
/*
* Capturo o caminho fisico aonde se encontra meu modelo de
* relatorio ja compilado. Repare que aqui eu pego o meu
* contexto e o caminho aonde se localiza o relatorio, em forma
* de url.
*/
String jasper = request.getContextPath()+ "/relatorios/produto.jasper";
/* Crio a variavel ops que ira receber o stream do relatorio */
OutputStream ops = null;
/* Aqui pego o host aonde o meu servlet esta executando */
String host = "http://" + request.getServerName() + ":" + request.getServerPort();
/*
* Aqui eu monto a URL aonde o meu modelo de relatorio se
* localiza
*/
URL jasperURL = new URL(host + jasper);
try {
System.out.println("Getting the binary...");
/*
* DEPRECIADO - Esta era a forma utilizada para gerar o pdf
* ate a versao 0.5.x. Na versao 0.6.x a classe JasperManager
* foi depreciada, e o metodo runReportToPdf foi incluido na
* nova classe JasperRunManager. Alguns outros metodos foram
* da classe JasperManager foram incluidos nesta classe e o
* restante foram agrupados nas classes
* JasperCompileManager, JasperFillManager e
* JasperExportManager.
* byte[] bytes = JasperManager.runReportToPdf(
* jasper.openStream(), params, conn);
*/
/*
* Informo ao browser que a pagina que sera retornada
* e um arquivo pdf
*/
response.setContentType(CONTENT_TYPE_PDF);
/*
* Gero o relatorio e armazeno o stream retornado num
* array de bytes
*/
byte[] bytes = JasperRunManager.runReportToPdf(jasperURL.openStream(), params, conn);
/*
* Pego uma referencia do outputStream e gravo nele meu
* array de bytes
*/
if (bytes != null) {
ops = response.getOutputStream();
System.out.println("Writting binary");
ops.write(bytes);
System.out.println("Sending report...");
}
} catch (JRException ex) {
ex.printStackTrace();
} finally {
/*
*
*/
if (ops != null) {
ops.flush();
ops.close();
}
try {
conn.close();
} catch (SQLException ex1) {
ex1.printStackTrace();
}
}
}
}
Espero que este exemplo te ajude a resolver seu problema. E qualquer duvida pode perguntar. Ainda estou conhecendo o framework JasperReport, mais caso saiba como resolver seu problema, ficarei feliz em ajudar 