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.