Dúvida em usar duas versões de uma mesma API na mesma aplicação

3 respostas
emmanuelrock

Olá pessoal é o seguinte:

No meu sistema integrei funcionalidades de outros sistemas, os gráficos do JFreeChart e os relatórios do iReport, ambas em partes separadas do sistema. Porém, quando vou gerar os gráficos usando a versão 1.0.0 do JFreeChart funciona corretamente, mas quando vou gerar o relatório em pdf acontece um erro de campo não encontrado (NoSuchFieldError) e não gera o pdf.

Mas quando uso a versão 1.0.12 do JFreeChart o pdf é gerado corretamente, porém o gráfico não é gerado.

Queria saber se tem como usar as duas libs - jfreechart 1.0.0 e jfreechart 1.0.12 - na minha aplicação sem que aconteça alguma concorrência no class loader?

Abraço…

3 Respostas

Giulliano

Essa pergunta depende de algumas outras coisas…basicamente o que acontece é que a JVM vai subir em memória a API que ela encontrar primeiro. Não se sabe a ordem que ela faz essa leitura (depende da JVM).

Sinceramente eu não recomendo essa solução.

Paulo_Silveira

voce vai ter de usar classloaders diferentes pra cada caso. da pra fazer, mas é certeza que precisa dessa complicacao?

emmanuelrock

É que no meu caso vou ter que ir mesclando as classes divergentes, pois há classes que na versão mais nova tem seu escopo diferente das versões antigas, e eu prefiro não substitui-las. Mas vou tentar dar um jeito aqui, obrigado a todos.

Criado 2 de setembro de 2009
Ultima resposta 3 de set. de 2009
Respostas 3
Participantes 3