Struts separar model

Amigos,

Estou trabalhando um projeto com Struts e preciso passar um método do Action para a camada model: é um método que compõe um relatório em jasperreport. Sempre que tento separar o método da classe Action, dá um classNoDefFoundError nas classes/interfaces importadas do jasperreports, como a net.sf.jasperreports.engine.JRDataSource.
Alguém poderia-me ajudar a passar o seguinte método para uma classe separada do Action? sem dar classNoDefFoundError toda hora?

/*
 * !!implementar na camada model!! aqui só faz a chamada
public ActionForward relatorios(ActionMapping mapping, ActionForm form,
		HttpServletRequest request, HttpServletResponse response)
throws Exception {
	ActionMessages errors = new ActionMessages();
	ActionForward forward = null;
	ServletContext contexto = this.getServlet().getServletContext();
	DataSource ds = EJBUtil.getDataSource("java:/CadastrosMySqlDS");
	Connection conn = ds.getConnection();
	Statement stm = conn.createStatement();
	String sql = "SELECT funcionario.nome as nomeF," +
	" count(funcionario.id) total," +
	" funcionario.endereco, funcionario.salario," + 
	" funcionario.cpf, funcionario.email," +
	" funcionario.categoria, categoria.id," +
	" categoria.nome as nomeC" +
	" FROM funcionario, categoria" +
	" WHERE funcionario.categoria = categoria.id" +
	" GROUP BY funcionario.id";
	ResultSet rs = stm.executeQuery(sql);
	try		
	{	
		String caminho = contexto.getRealPath("/");
		File reportFile = new File(contexto.getRealPath("/relatorios/funcionarios.jasper"));
		if (!reportFile.exists())
			errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.relatorio.jasper"));

		JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());			
	
		Map parameters = new HashMap();
		parameters.put("ReportTitle", "Listagem");
		parameters.put("BaseDir", reportFile.getParentFile());
					
		JasperPrint jasperPrint = 
			JasperFillManager.fillReport(
				jasperReport, 
				parameters, 
				new JRResultSetDataSource(rs)
				);						
		JasperExportManager.exportReportToPdfFile(jasperPrint, caminho + "funcionarios.pdf");
		forward = mapping.findForward("reportPdf");
	}
	catch (JRException jre){
		errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.gerar.relatorio"));
		getServlet().log("Erro ao gerar relatório", jre);
	}
	catch(Exception e){
		errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.relatorio"));
		getServlet().log("Erro ao gerar relatório", e);
	}
	if (!errors.isEmpty()){
		saveErrors(request, errors);
		forward = mapping.findForward("failed");
	}
	return forward;
}
*/

Agradeço desde já,
Sidarta O.S.S.

Opa,

bem gerar relatório usando jasper é um saco mesmo, bem para começar certique de que teu .jasper foi compilado na mesma versão do jar que está em seu classpath.

Bem pelo o teu código não deu para identificar um erro assim claramente, mas este erro que você está falando parece que a biblioteca do jasper não está corretamente instalada. Outra coisa, também é que pelo menos eu, usando struts não uso um mapeamento para mostrar o pdf. eu já coloco a resposta o tipo pdf e faço um return null.

:okok:

Marcos, não tem nada de errado quando o método está no Action, tudo funciona. O problema é quando separo o método em uma classe para separar o model do view. Mesmo importando todas as classes do jasperreports, dá classNotFoundError.

Como resolvo?
Sidarta O.S.S.

Coloque aí então teu código separado…

:okok: