Retorno Vazio - Testando JFreeChart

15 respostas
Claire

Pessoal, to tentando aprender algumas coisas no JFreechart. Tinha feito uma mini-aplicação teste e ela estava funcionando normalmente. Mas, parou de funcionar... Depois de "tanto" mexer tenho o seguinte código.

<%@page language="java" %>
<%@page import="com.jrefinery.chart.*" %>
<%@page import="com.jrefinery.data.*" %>
<%@page import="java.awt.image.*" %>
<%@page import="java.awt.*" %>
<%@page import="java.io.*" %>

<%
try{
DefaultPieDataset pieDataset = new DefaultPieDataset();
pieDataset.setValue("JavaWorld", new Integer(75));
pieDataset.setValue("Other", new Integer(25));

JFreeChart chart = ChartFactory.createPieChart
                     ("Sample Pie Chart",   // Title
                      pieDataset,           // Dataset
                      true                  // Show legend
                     );


ChartUtilities.saveChartAsJPEG(new File("C:\chart.jpg"), chart, 500, 300);


//response.sendRedirect("mostra.jsp");
}
catch(Exception e){
	System.out.println("ERROOOO!!!!>>>> "+e);
}
%>

<html>

<body>
<center>
TESTES<BR>
<img src="C:chart.jpg">
</center>
</body>
</html>

Este arquivo é meu index.jsp ...
O retorno disto porém é uma html vazia.
Tentei também gerar o gráfico em uma tela e mostrar na outra, mas não passa da primeira tela.
As variáveis de ambiente estão corretas, pois consigo rodar outras aplicações prontas e os pacotes nos devidos lugares no WEB-INF.
Alguém sabe o que eu estou fazendo de errado?

Desde já obrigada!
Claire

15 Respostas

danieldestro

Provavelmente alguma exceção está sendo lançada.

Claire

Tenho dificuldade em tratar excessões… No retorno do tomcat não tem nada…
Como eu posso fazer pra visualizá-la?

R
"Claire":
Tenho dificuldade em tratar excessões... No retorno do tomcat não tem nada... Como eu posso fazer pra visualizá-la?
<body> 
<center> 
TESTES<BR> 
<img src="C:chart.jpg"> 
</center> 
</body> 
</html>

Dei uma olhado por cima no seu codigo, vc naum esqueceu de colocar a no caminho da imagem, de uma olhada nisso

rocharrv

Claire

Hum… não esqueci… Acho que ao postar no fórum ela sumiu… Assim como a sua…rsss
Mesmo assim deveria aparecer “TESTES” na tela e aquele quadradinho de imagem não encontrada…
Acho que deve ser excessão mesmo…

Luiz_Henrique_Coura

fiz umas alterações no seu JSP e passou a funcionar.

primeiro: API’s

utilizo a jfreechart-0.9.20.jar (essa é a mais recente)
insira essa e a jcommon-0.9.5.jar dentro do diretório WEB-INFlib da aplicação. essas duas API’s trabalham em conjunto.

outra coisa…
o método ChartFactory.createPieChart( String, DefaultPieDataset, boolean ) não existe nas versões mais recentes da JFreeChart.

quando você cria uma instância de new File(“C:chart”) a barra tem que ser \ —> new File(“C:\chart”) pois senão é acusado um caracter ilegal de scape.

e quando você faz referência a imagem criada em:

<img src=“C:chart.jpg”>

você tem que colocar a barra…

<img src=“C:chart.jpg”>

o código está baixo…

<%@page import="java.io.*" %> 
<%@page import="org.jfree.data.*" %> 
<%@page import="org.jfree.chart.*" %> 

<% 
try { 
    DefaultPieDataset pieDataset = new DefaultPieDataset(); 
    pieDataset.setValue( "JavaWorld", new Integer( 75 ) ); 
    pieDataset.setValue( "Other", new Integer( 25 ) ); 

    JFreeChart chart = ChartFactory.createPieChart( "Sample Pie Chart",   
                                                     pieDataset,         
                                                     true,               
                                                     true,               
                                                     true ); 

    ChartUtilities.saveChartAsJPEG(new File("C:\chart.jpg"), chart, 500, 300); 

} catch( Exception e ) { 
   System.out.println( "ERROOOO!!!!>>>> " + e ); 
}
%> 

<html> 
 <body> 
  <center> 
   <P><B>PIECHART</B></P> 
   <img src="C:chart.jpg"> 
  </center> 
 </body> 
</html>
Luiz_Henrique_Coura

é verdade para colocar \ no fórum você tem que colocar duas
assim \

Luiz_Henrique_Coura

corrigindo o código…

<% 
try { 
    DefaultPieDataset pieDataset = new DefaultPieDataset(); 
    pieDataset.setValue( "JavaWorld", new Integer( 75 ) ); 
    pieDataset.setValue( "Other", new Integer( 25 ) ); 

    JFreeChart chart = ChartFactory.createPieChart( "Sample Pie Chart",   
                                                     pieDataset,         
                                                     true,               
                                                     true,               
                                                     true ); 

    ChartUtilities.saveChartAsJPEG(new File("C:\chart.jpg"), chart, 500, 300); 

} catch( Exception e ) { 
   System.out.println( "ERROOOO!!!!>>>> " + e ); 
}
%> 

<html> 
 <body> 
  <center> 
   <P><B>PIECHART</B></P> 
   <img src="C:\chart.jpg"> 
  </center> 
 </body> 
</html>
danieldestro

Ele não mostra "ERROOOO!!!>>>> " no console ???

Claire

Antes… Não mostra erro nenhum…

Com este código do Luiz Henrique até que ameaça funcionar…rss… Só que não encontra o DefaultPieDataset como se o import estivesse errado…
Já conferi, e os arquivos estão corretos… Sei lá… to procurando o erro ainda…

Claire

Alguém sabe me dizer pq a aplicação não reconhece o .jar?

Luiz_Henrique_Coura

Claire eu utilizo essa API e não tem muito segredo em utilizá-las você deve estar esquecendo algum detalhe.

a classe DefaultPieDataset está em…

org.jfree.data.*

portanto voce deve importar esse pacote em seu JSP

<%@page import=“org.jfree.data.*” %>

o restante das classes JFreeChart, ChartFactory… está em…

org.jfree.data.*

então você deve importar esse pacote em seu JSP

<%@page import=“org.jfree.chart.*” %>

e é claro, você também tem que usar a java.io por causa da classe File

agora pra que isso funcione corretamente você tem que ter os .jars dentro da sua aplicação… em seu diretório lib.

são duas API’s: jfreechart-0.9.20.jar e jcommon-0.9.5.jar

diga qual a versão de sua API que está usando.
e mostre seus imports.

Claire

Os imports estão corretos e a APIs em lib…
Estou usando :
jcommon-0.9.6.jar e
jfreechart-0.9.21.jar

Claire

Na caca…rss
eu fiz o seguinte na declaração:

org.jfree.data.general.DefaultPieDataset pieDataset = new org.jfree.data.general.DefaultPieDataset();

então ele reconheceu…

Luiz_Henrique_Coura

legal!!

preciso atualizar minha API.

nessa nova versão a Classe DefaultPieDataset está dentro de general diferente da versão anterior que está em um diretório abaixo… data

Claire

A minha API era velha tb, até que vc deu a dica de atualizar…
Valeu pela ajuda Luiz!

Claire

Criado 14 de setembro de 2004
Ultima resposta 15 de set. de 2004
Respostas 15
Participantes 4