IReport x Tamanho do .Jar

3 respostas
SandroSoftwares

Amigos, bom dia!

Estou com um “problema” e gostaria da opinião de vocês…
Tive um problema ao instalar e utilizar a versão iReport-4.5.0.
Não abria o relatório de jeito nenhum pelo netbeans…
Dai pesquisando encontrei esse tutotial muito legal: http://davidbuzatto.com.br/2010/10/09/jasperreports-trabalhando-com-relatorios-em-java-parte-1/

Descobri através dele que o problema era que algumas bibliotecas eu não tinha colocado no projeto…

nele está escrito:

fiz isso e rodou legal, mas na hora de criar o .jar do meu aplicativo o tamanho desse .jar ficou + - 10 vezes maior… (algo em torno de 72 mb)

É um aplicativo desktop só para chamar relatórios simples com consultas ao banco de dados…

Alguma sugestão?

:!: :roll:

3 Respostas

SandroSoftwares

e ainda, como saber qual .jar do Ireport eu vou utilizar???

:roll:

utluiz

Antes de mais nada, você deve diferenciar JasperReports de iReport. O primeira é uma biblioteca de geração de relatórios e o segunda um editor visual.

Sobre o problema de instabilidade de dependências, na empresa em que trabalho utilizamos uma versão antiga do JasperReports para não ter esse tipo de problema com as diferentes versões. (Na verdade, é antiga demais na minha opinião)

Mas então, você deve usar o iReport para editar o relatório e colocar somente as dependências do JasperReports no seu projeto.
Num projeto pessoal em que precisava de relatórios, usei a versão mais recente através do maven, então todas as dependências básicas de tempo de execução necessárias são trazidas automaticamente, evitando vários jars desnecessários.

O trecho ficou assim:

<dependency>
	<groupId>net.sf.jasperreports</groupId>
	<artifactId>jasperreports</artifactId>
	<version>4.5.1</version>
	<exclusions>
		<exclusion>
			<artifactId>jfreechart</artifactId>
			<groupId>jfree</groupId>
		</exclusion>
		<exclusion>
			<artifactId>castor</artifactId>
			<groupId>org.codehaus.castor</groupId>
		</exclusion>
		<exclusion>
			<artifactId>stax-api</artifactId>
			<groupId>stax</groupId>
		</exclusion>
		<exclusion>
			<artifactId>commons-logging</artifactId>
			<groupId>commons-logging</groupId>
		</exclusion>
	</exclusions>
</dependency>

Se você notar, eu exclui algumas dependências porque estavam conflitando com versões utilizadas por outras dependências.
No caso, também exclui o jfreechart pois não iria usar gráficos no relatório.
Gerenciar as dependências necessárias nesses casos é complicado na minha opinião, pois depende muito do seu conhecimento sobre essas dependências ou de uma documentação bem clara.
Quando comecei a trabalhar com essas coisas eu fiz uma pesquisa do que cada jar fazia. Sei, por exemplo, que o “barbecue” é usado para gerar código de barras, o “jfreechart” para os gráficos em geral (tipo do excel), o “iText” para gerar PDF e o “poi” documentos do office (word e excel). Já as dependências “commons-*” geralmente são necessárias sempre.

Enfim, quando eu vejo um jar desses lá no meio eu já tenho uma ideia se ele é necessário, desde que também saiba o que os relatórios implementam.

Se você não tem como usar o maven e estiver meio perdido ainda, uma estratégia básica é deixar somente o jasperreports.jar e, tentar executar o relatório e ver qual classe falta. Pelo pacote e pelo nome da classe, é possível saber a qual jar ela pertence. Adicione o jar e repita a operação.
Também dá pra fazer o contrário. Vai tirando os jars que acha q não está usando. Se o relatório para de funcionar, avance para o próximo.

SandroSoftwares

Ok Luiz… não tem código de barra, pode ter gráfico lá na frente…

vou retirando mesmo pra ver o que dá…

Se alguém tiver mais alguma descrição do que cada jar desse faz agradeço!

Mas vou pesquisar aqui!

Criado 27 de setembro de 2012
Ultima resposta 27 de set. de 2012
Respostas 3
Participantes 2