Novas Bibliotecas - JFREECHART - JSP

Hey Ya! pra vcs!

Seguinte, eu baxei um pacote chamado JFREECHART e preciso usar suas bibliotecas na pagina que eu to fazendo pra poder fazer graficos e tal. eu ja defini as variaveis de ambiente, e ja copiei os .jar pra pasta /WEB-INF/lib da minha pagina. e ainda nao funciona.

Alguem tem uma luz?

Vc precisa especificar o problema pra que a gente possa te ajudar. Tem alguma exception aí pra gente poder ver? Se tiver, posta o stacktrace dela.

O erro do TomCat é:

[i]exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 11 in the jsp file: /chart.jsp

Generated servlet error:
[javac] Compiling 1 source file

C: omcatworkCatalinalocalhostTreinamentoorgapachejspchart_jsp.java:55: cannot resolve symbol
symbol : class DefaultPieDataset
location: class org.apache.jsp.chart_jsp
DefaultPieDataset pieDataset = new DefaultPieDataset();[/i]

Eu interpretei esse erro como o TomCat nao estar conseguindo reconhecer a Classe que eu preciso usar…

Dê uma olhada se no argumento import do cabeçalho do seu jsp estão os pacotes que vc está querendo acessar.

<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="org.jfree.chart.*,org.jfree.plot.*,org.jfree.data.*" %>

OK, estamos progredindo!

Na minha tag do IMPORT, eu adicionei os parametros e agora o erro mudou:

[code]exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 14 in the jsp file: /chart.jsp

Generated servlet error:
[javac] Compiling 1 source file

C: omcatworkCatalinalocalhostTreinamentoorgapachejspchart_jsp.java:64: createAreaXYChart(java.lang.String,java.lang.String,java.lang.String,org.jfree.data.XYDataset,org.jfree.chart.plot.PlotOrientation,boolean,boolean,boolean) in org.jfree.chart.ChartFactory cannot be applied to (java.lang.String,java.lang.String,java.lang.String,org.jfree.data.XYDataset,boolean)
JFreeChart chart = ChartFactory.createAreaXYChart
^
1 error[/code]

Dá uma olhada no javadoc da classe ChartFactory. Acho que tem um erro na passagem de parâmetros para o método createAreaXYChart. Além disso de 2 métodos createAreaXYChart, 1 está deprecado. Utilize createXYAreaChart se for o caso.

:wink: Pessoar, consegui fazer compilar o grafico!!!
o codigo esta a seguir:
INCLUDE:

<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="org.jfree.chart.ChartFactory,org.jfree.chart.*, org.jfree.chart.plot.*,org.jfree.data.*" %>

CODIGO:

[code]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
true,
true
);[/code]

Mas ele nao imprime nada na tela :cry: …NAO SEI OQ FACO!!!HELP!!! :wink:

Calma, vc tá quase la :slight_smile: . Provavelmente vc não especificou como apresentar seu gráfico. No caso da página web é mais fácil vc criar uma imagem a partir do seu gráfico. Dê uma olhada na classe ChartUtilities. Ela prove métodos estáticos que auxiliam na apresentação do gráfico. Experimente um dos métodos saveChartAsJPEG. Depois é só carregar o arquivo gerado através de uma tag img. Acho que agora vc consegue. :wink:

Pessoal, sim, agora que eu consegui compilar o maldito grafico… preciso imprimi-lo na tela,

to usando:
chart.draw(g2,area);

onde g2 é o dispositivo de saida (tela/impress.) e a area é o tamanho do grafico…mas o compilador nao reconhece o metodo…esquisito :?

ok, eu sei que eu to torrando o saco dos caras que realmente manjam nesse site, mas é que sou novo em Java… entao vamos a mais um problema:

os Include estao assim:

<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="org.jfree.chart.ChartFactory,org.jfree.chart.*, org.jfree.chart.plot.*,org.jfree.data.*,org.jfree.ui.*" %>

O codigo esta assim:

[code]<%
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
true,
true
);
ChartUtilities.saveChartAsJPEG("chart.jpg",chart,12,12);
%>[/code]

e o erro esta assim:

[code]exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 12 in the jsp file: /chart.jsp

Generated servlet error:
[javac] Compiling 1 source file

C: omcatworkCatalinalocalhostTreinamentoorgapachejspchart_jsp.java:72: cannot resolve symbol
symbol : method saveChartAsJPEG (java.lang.String,org.jfree.chart.JFreeChart,int,int)
location: class org.jfree.chart.ChartUtilities
ChartUtilities.saveChartAsJPEG("chart.jpg",chart,12,12);
^
1 error[/code]

Ao que vejo, o compilador nao reconhece o metodo, mas eu ja declarei o pacote que contem ele no include, ENTAUM ONDE EU TO ERRANDO!!! AHHHhhh … preciso de um cafe… :?

Seguinte, como vc disse que é iniciante em java então vou te contar um segredinho: "Os javadocs são a principal documentação quando estamos falando de API´s, seja ela a API oficial do java ( http://java.sun.com/j2se/1.4.2/docs/api/index.html ) ou alguma extensão que vc está utilizando (no caso o JFreeChart). Perceba que todas estas API´s que vc vai utilizar daqui pra frente contém javadocs. Aì vc me pergunta o que é javadoc? Javadoc é uma ferramenta que gera aquele html padrão que vc vê em todas as API´s java.
Ok, vc deve estar se perguntando o que isso tudo tem a ver com o meu problema. Se vc for novamente no javadoc do JFreeChart, mais especificamente na descrição do método saveChartAsJPEG vc vai perceber onde está errando.

Não existe um método saveChartAsJPEG que receba uma String:

ChartUtilities.saveChartAsJPEG&#40;&quot;chart.jpg&quot;,chart,12,12&#41;; 

Corrija o código acima para:

ChartUtilities.saveChartAsJPEG&#40;new File&#40;&quot;chart.jpg&quot;&#41;,chart,12,12&#41;; 

Então, não esqueça de sempre dar uma olhadinha nos javadocs das classes que vc tem dúvida. :wink:

Cara! obrigado mesmo pela paciencia que vc tem comigo… finalmente consegui fazer o grafico… agora o meu problema, é com o AreaXY… ta dando um pau esquisito do tipo exception…da uma olhadinha no codigo e no erro:
codigo:

[code]<%
XYSeries series = new XYSeries("Average Size");
series.add(20.0, 10.0);
series.add(40.0, 20.0);
series.add(70.0, 50.0);
XYDataset xyDataset = new XYSeriesCollection(series);

JFreeChart chart = ChartFactory.createXYAreaChart
("Sample XY Chart", // Title
"Height", // X-Axis label
"Weight", // Y-Axis label
xyDataset, // Dataset
PlotOrientation.HORIZONTAL,
true, // Show legend
true,
true
);
%>[/code]

erro:

[code]exception

javax.servlet.ServletException: org.jfree.chart.ChartFactory.createXYAreaChart(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/jfree/data/XYDataset;Lorg/jfree/chart/plot/PlotOrientation;ZZZ)Lorg/jfree/chart/JFreeChart;
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:673)
org.apache.jsp.xyarea_jsp._jspService(xyarea_jsp.java:90)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

root cause

java.lang.NoSuchMethodError: org.jfree.chart.ChartFactory.createXYAreaChart(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/jfree/data/XYDataset;Lorg/jfree/chart/plot/PlotOrientation;ZZZ)Lorg/jfree/chart/JFreeChart;
org.apache.jsp.xyarea_jsp._jspService(xyarea_jsp.java:71)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)[/code]

isso sera o fim de uma carreira brilhante de programacao que teria pela frente? Socorro!!!