Dúvida JasperReport

5 respostas
M

boa tarde, estou com problemas para fazer rodar um relatório em um site jsp, sou iniciante e ja tentei seguir alguns tutoriais, nao sei se os tutoriais estao desatualizados ou é erro meu causado pela minha inexperiencia, so acho tutoriais para gerar o relatorio via classe com main, porem quero pra web e tentei algumas modificações, porem deu erro. segue as classes e o erro:

Struts.xml

<package name="strutsreport" namespace="/" extends="jasperreports-default">
		<action name="gerarRelatorio" class="testeJasper.JasperAction">
			<result name="success" type="jasper">
				<param name="location">/Matriculas.jasper</param>
				<param name="dataSource">myList</param>
				<param name="format">PDF</param>
			</result>
		</action>
	</package>

JasperAction.java

public class JasperAction extends ActionSupport {
	private final Connection connection;

	public JasperAction() {
		try {
			connection = new ConnectionFactory().getConnection();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	
	List<Mensalidade> myList = new ArrayList<Mensalidade>();
	
	public String execute() throws Exception {
		
			 
			
				PreparedStatement stmt = this.connection.prepareStatement("SELECT MATRICULA_CLI, NOMECOMPLETO_CLI, MESREFERENCIA, ANOREFERENCIA FROM TB_TB_MENSALIDADE WHERE PAGAMENTOOK=0 ORDER BY MATRICULA_CLI");
				

				ResultSet rs = stmt.executeQuery();
				while(rs.next()) {   
					//adiciona a tarefa na lista   
					myList.add(populaContato(rs));   
					}   
				
								
				try {
		            JasperCompileManager.compileReportToFile(
		                    "/Mensalidades.jrxml",
		                    "/Mensalidades.jasper");
		        	} catch (Exception e) {
		        		e.printStackTrace();
		        		return ERROR;
		        	}

		        	return SUCCESS;
		    
				   
	}
	
	private Mensalidade populaContato(ResultSet rs) throws SQLException {
	Mensalidade mensalidade = new Mensalidade();
	
	//INICIALIZA OBJETO MENSALIDADE
	mensalidade.setMatricula_cli(rs.getInt("MATRICULA_CLI"));
	mensalidade.setNomecompleto_cli(rs.getString("NOMECOMPLETO_CLI"));
	mensalidade.setMesreferencia(rs.getString("MESREFERENCIA"));
	mensalidade.setAnoreferencia(rs.getString("ANOREFERENCIA"));
	
	return mensalidade;
}

	public List<Mensalidade> getMyList() {
		return myList;
	}
	
	
}

testejasper.jsp

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
	<s:form action="gerarRelatorio">
	<s:submit value="Gerar Relatório de Mensalidades em pdf"></s:submit>
	</s:form>
</body>

e o erro quando eu clico no botao para gerar o relatorio:

type Status report

message No result defined for action testeJasper.JasperAction and result error

description The requested resource (No result defined for action testeJasper.JasperAction and result error) is not available.

no console do eclipse:

conectando ...
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: /Mensalidades.jrxml (No such file or directory)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:174)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:154)
	at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:111)
	at testeJasper.JasperAction.execute(JasperAction.java:44)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)

5 Respostas

kenneth

Fala brow…

O caminho pro seu arquivo Mensalidades.jrxml esta incorreto…

Da uma conferida aonde esta o arquivo e onde o sistema esta buscando por ele…

Abraco!

M

eu coloquei o arquivo em todos os lugares possiveis ja, sera que nao é outro erro?
ja coloquei no projeto onde esta a action, no src, webcontent etc.

M

será que alguem vai conseguir me ajudar??

kenneth

Fala brow…

Seguinte, quando aconteceu comigo esse erro, era pq o projeto nao estava conseguindo
achar o relatorio…
Se nao me engano (alguem ae vai me corrigir se for o caso), quando voce usa “/” no comeco
do endereco, se refere a pasta raiz do projeto…

Entao, se seu relatorio esta numa package “relatorio”, tenta colocar “/relatorio/Mensalidade.jrxml”.

Se nao adiantar, tenta usar isso aqui pra “achar” o diretorio que vc se encontra:

File diretorioAtual = new File("");
System.out.println(diretorioAtual.getAbsolutePath());

Abraco

M

nao funcionou nada nao…
deixa pra la, desisti do projeto ja, programação definitivamente não é minha area
valeu ae pela ajuda.

Criado 6 de setembro de 2010
Ultima resposta 6 de set. de 2010
Respostas 5
Participantes 2