IReport x Tamanho do .Jar

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:

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

:roll:

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.

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!