Novas Bibliotecas - JFREECHART - JSP

11 respostas
z3r00

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?

11 Respostas

maresp

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.

z3r00

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…

maresp

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.*" %>
z3r00

OK, estamos progredindo!

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

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
maresp

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.

z3r00
: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:
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
                     );

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

maresp

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:

z3r00

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 :?

z3r00

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:
<%
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);
%>
e o erro esta assim:
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

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.... :?

maresp

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("chart.jpg",chart,12,12);

Corrija o código acima para:

ChartUtilities.saveChartAsJPEG(new File("chart.jpg"),chart,12,12);

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

z3r00
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:
<%
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
                     );
%>
erro:
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)

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

Criado 21 de maio de 2004
Ultima resposta 24 de mai. de 2004
Respostas 11
Participantes 2