[RESOLVIDO] Erro Ireport

Java

12/08/2011

Oi. Estou tentando criar um arquivo pdf usando o ireport, é a primeira vez que faço isso e estou tendo mtas dificuldades, qdo eu compilei a seguinte classe deu erro, segue a classe e o erro que tive.
package tests.report.bean;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class Teste {

	 private void createReportBean() {
		 
		 String caminhoRelJasper = "report1.jasper";                       
         InputStream reportFile = getClass().getResourceAsStream(caminhoRelJasper); 
         List<PessoaBean> lista = new ArrayList<PessoaBean>();

         PessoaBean bean1 = new PessoaBean();
         bean1.setNome("Pessoa Um");
         bean1.setIdade(23);
		
         PessoaBean bean2 = new PessoaBean();
         bean2.setNome("Pessoa Dois");
         bean2.setIdade(38);
		
         lista.add(bean1);
         lista.add(bean2);
		
         JRDataSource jrds = new JRBeanCollectionDataSource(lista);
		
         try {
              JasperFillManager.fillReportToFile(
                   "report1.jasper", // Caminho onde está o relatório compilado
                   null, 
                   jrds
              );
			
              // PDF
              JasperExportManager.exportReportToPdfFile(
                   "ReportBeanTest.jrprint", // Caminho onde está o relatório preenchido
                   "ReportBeanTest.pdf" // Caminho onde será gerado o pdf
              );
          }
          catch(Exception ex) {
              ex.printStackTrace();
          }
    }
	 
	 
	 public static void main(String args[])
	 {		 
		 new Teste().createReportBean();
	 }
	
}

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at net.sf.jasperreports.engine.JasperCompileManager.getCompiler(JasperCompileManager.java:469)
	at net.sf.jasperreports.engine.JasperCompileManager.loadEvaluator(JasperCompileManager.java:235)
	at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:424)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:430)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:78)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:58)
	at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
	at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:78)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
	at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:513)
	at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:465)
	at tests.report.bean.Teste.createReportBean(Teste.java:33)
	at tests.report.bean.Teste.main(Teste.java:53)
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilationFailedException
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 19 more
Alguem sabe me dizer que erro é esse? Ele compila sem erro nenhum mas na hora de executar acontece isso... Obrigado.
Victor Bello

Victor Bello

Curtidas 0

Respostas

Douglas Eric

Douglas Eric

12/08/2011

isso nao é java basico. isso vai em frameworks
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

Desculpe. Alguem sabe o que poderia estar causando este erro?
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

provavelmente você esqueceu de incluir no classpath algum dos jars necessários
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

eu inclui uns 5 jars, depois eu posto aki quais foram... Só uma pergunta em relaçao a colocar os jars no projeto... qdo eu exportar o programa, nao ficaria mto grande importanto isso tudo de arquivo?
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

depende dos jars. essas bibliotecas nunca tem nem 1mb. então não é grande coisa
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: \ReportBeanTest.jrprint
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:94)
	at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromFile(JRLoader.java:83)
	at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:97)
	at tests.report.bean.Teste.createReportBean(Teste.java:40)
	at tests.report.bean.Teste.main(Teste.java:53)
Caused by: java.io.FileNotFoundException: \ReportBeanTest.jrprint
	... 5 more
Coloquei esse groovy-all-1.7.5.jar e "funcionou" mas agora da esse erro acima. Os jars que eu importei para o projeto foram: commons-collection-3-2-1.jar commons-beanutils-1.8.2.jar commons-javaflow-20060411.jar commons-logging-1.1.jar commons-digester-1.7.jar jasperreports-4.1.1.jar commons-logging-1.1.jar groovy-all-1.7.5.jar precisa desses todos mesmo?
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

precisa de todos eles sim. esse erro... "[url=http://javafree.uol.com.br/topic-882405-FAQ-Stack-Trace.html?page=1#201708]java.io.FileNotFoundException[/url]"
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

Bom, eu consegui uma pequena melhora, mudei de erro; rsrs
Exception in thread "main" java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException
	at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:117)
	at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:99)
	at tests.report.bean.Teste.createReportBean(Teste.java:42)
	at tests.report.bean.Teste.main(Teste.java:55)
Caused by: java.lang.ClassNotFoundException: com.lowagie.text.DocumentException
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 4 more

Ja coloquei no classpath os jars do itext mas também nao rolou. sekkuar, entao, soh nesses jars que importei acima, ja da mais de 8mb. só esse groovy são 5mb =/
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

cacilda! por isso eu não uso o ireport. esse erro agora, é problema de versão. você colocou o jar de uma versão errada do iText pelo que eu me lembre, os que tem o pacote com.lowagie são uma versão muito antiga. nas mais novas eles mudaram para com.itext
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

Faltou adicionar o API do iText no classpath da sua aplicação. Caso queria ter um controle maior das APIs, dê uma estudada no [url=http://maven.apache.org/]maven[/url]
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

dificil... sabe onde eu acho essa versao do itext? Cara, eu quero fazer algo bem simples, gerar um arquivo .doc ou pdf que tem um modelo e trocará em alguns lugares de acordo com o que foi buscado, mas será sempre apenas 1 usuario. por exemplo, a pessoa inserir o usuario victor, 19 anos, bla bla bla eu vou ter um modelo que vai ter nome: <nome> idade: <idade> e a consulta vai retornar apenas 1 pessoa. porém, eu queria isso formatado. alguem sabe como eu poderia fazer isso de outra maneira sem usar o ireport? Valeu.
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

eu fiz usando openoffice. mas se você acha que ireport é complicado e gasta muito espaço no pc do usuário, então nem pense nisso XD aqui: é versão 2.1.7 que você precisa http://olex.openlogic.com/packages/itext/2.1.7
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

P*#$@ CARA!! GEROU, valeu man!!!!! *.* só uma coisa, qdo eu exportar meu arquivo, ele vai ficar com uns 15~20mb -.-' o que poderia ser feito pra que ele nao passasse de 5mb? pq importar tudo isso de api acabou deixando ele mto grande. O problema nao é nem o arquivo ser grande pra executar, mas é que ele fica na rede, e qdo for carregar vai acabar demorando um pouco, né? novamente, muito obrigado pela ajuda.
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

quando for carregar? você quer dizer, deixar o .jar na rede e todo mundo executar o mesmo? não tem problema não. A JVM só vai carregar as classes qaundo elas forem necessárias, então não vai primeiro carregar todos os 20mb pra depois executar, pode ficar sossegado. Mas, pra não ter trocentas mil libs pra ficar copiando, talvez você queira juntar as libs no mesmo jar. sei la, so uma sugestão
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

Então, quando eu gero o arquivo .jar do meu projeto eu vou em : export -> runnable jar file -> package required libraries into genarete jar. seria isso mesmo neh? ai ficariam todos as libs que usei ja no jar que gerei, correto?
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

huuuuum vou apostar que você está usando o eclipse então. bom, abre o seu jar e vê se suas bilbiotecas estão já dentro. eu não use o eclipse faz séculos, então não sei te dizer
GOSTEI 0
Douglas Eric

Douglas Eric

12/08/2011

é isso mesmo, ta tudo la direitinho. valeu novamente. Pra que eu nao precise ficar copiando o arquivo .jasper pra onde ta o .jar, tem algum lugar que de pra compilar ele junto? __________ Cara, to com um probleminha, eu joguei os arquivos para o servidor, e um atalho para minha maquina, do atalho, eu consigo gerar o pdf normalmente, mas do servidor ou de uma outra maquina que puxe o atalho da erro. O erro que aparece usando o e.getMessage() é "name", ai eu coloquei o e.fillInStackTrace() e o e.getCause(). No fillIn~ aparece java.lang.IllegalArgumentException:name no e.getCause() aparece null. Entretanto, como eu disse isso acontece apenas nas outras maquinas, na minha funciona normal. Tem ideia do que pode ser isso? Ja copiei o .jasper, renomeei, copiei os .jars para a pasta do java no servidor, nao faço ideia do que pode ser isso. valeu.
GOSTEI 0
POSTAR