Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > Java (Servlets y JSP) > Problemas con JFreeChart
-Foros de debate

Java (Servlets y JSP)
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Problemas con JFreeChart
Enviado por menchok el día 12 de mayo de 2004

Hola, estoy intentando ejecutar un ejemplo con jfreechart, tengo los dos .jar necesarios en la carpeta lib y en el claspath. Me compila bien pero a la hora de ejecutar en un navegador me da el siguiente error:

java.lang.NoClassDefFoundError
at org.jfree.chart.ChartFactory.createXYLineChart(ChartFactory.java:1194)
at org.jfree.chart.ChartFactory.createLineXYChart(ChartFactory.java:1737)
at ejemploGraficasServlet.crearChart(ejemploGraficasServlet.java:37)
at ejemploGraficasServlet.processRequest(ejemploGraficasServlet.java:70)
at ejemploGraficasServlet.doGet(ejemploGraficasServlet.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)


El codigo del ejemplo es este:

/*
* ejemploGraficasServlet.java
*
* Created on 10 de agosto de 2003, 14:25
*/

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import org.jfree.data.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;

/**
*
* @author Roberto Canales
* @version
*/
public class ejemploGraficasServlet extends HttpServlet
{

public JFreeChart crearChart()
{
XYSeries series = new XYSeries("Evolucion Sesiones");
series.add(1, 23);
series.add(2, 34);
series.add(3, 51);
series.add(4, 67);
series.add(5, 89);
series.add(6, 121);
series.add(7, 137);
XYDataset juegoDatos= new XYSeriesCollection(series);

JFreeChart chart = ChartFactory.createLineXYChart("Sesiones en Adictos al Trabajo",
"Meses", "Sesiones", juegoDatos,
PlotOrientation.VERTICAL,
true,true,true
);

return chart;
}


int getParamEntero(HttpServletRequest request,String pNombre, int pDefecto)
{
String param = request.getParameter(pNombre);

if (param == null || param.compareTo("") == 0)
{
return pDefecto;
}

return Integer.parseInt(param);

}


/** Processes requests for both HTTP GET and POST methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");

OutputStream salida = response.getOutputStream();
JFreeChart grafica = crearChart();

int ancho = getParamEntero(request,"ancho",400);
int alto = getParamEntero(request,"alto",300);

ChartUtilities.writeChartAsJPEG(salida,grafica,ancho,alto);

salida.close();
}

/** Handles the HTTP GET method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}


protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

}

Muchas gracias y un saludo.

 
Re: Problemas con JFreeChart
Enviado por menchok el día 12 de mayo de 2004

Ya he conseguido que me funcione.

 
Re: Re: Problemas con JFreeChart
Enviado por Harold el día 13 de mayo de 2004

Disculpeme, es que tengo un problema con las graficas no me cargan en el servidor ya tengo el Xvfb pero nada miro el catalina.out y sale algo como connection refused si me puedes colaborar te agradezco

 

Re: Re: Problemas con JFreeChart
Enviado por tecpa el día 4 de junio de 2004

tengo graficas de hostigrama en 2 y 3 dimensiones

¿ te interesa intercambiar código fuente ?

 

Re: Re: Problemas con JFreeChart
Enviado por ima el día 10 de mayo de 2008

Como lo has conseguido??? yo tambien tengo el problema ese.

 
Re: Re: Re: Problemas con JFreeChart
Enviado por Luis el día 21 de agosto de 2008

Hola yo también tenía el problema de no poder visualizar la imagen. Una solución que encontré fue crear el chart y luego guardarlo como imagen en una carpeta temporal, para finalmente llamarlo como imagen desde el jsp.

Creación del chart:

public JFreeChart crearChart(Datosgrafico objDatos) throws IOException {
XYSeries series = new XYSeries("Leyenda"); // leyenda del área sombreada

for (int i = 0; i < objDatos.getDatos().size(); i++) {
series.add(i + 1, objDatos.getDatos().get(i).getValor());
}

XYDataset juegoDatos = new XYSeriesCollection(series);

JFreeChart chart = ChartFactory.createXYLineChart("Titulo", "EjeX", " Eje Y", juegoDatos, PlotOrientation.VERTICAL, true, true, true);
try {
String lstrRuta = ObtenerRutaProyecto() + File.separator + "CarpetaTemporal" + File.separator + this.gpNombrarArchivo();

ChartUtilities.saveChartAsJPEG(new File(lstrRuta), chart, 500, 300);

} catch (IOException e) {
System.out.println("Error creando el gráfico");
}


return chart;
}

/**
* Obtiene la ruta base del proyecto sin el "/" final.
* @return
*/
public String ObtenerRutaProyecto() throws UnsupportedEncodingException {

try {
/* this.getClass().getResource -> Permite obtener la ruta base donde se esta ejecutando el proyecto*/
URL lobjurl = this.getClass().getResource("miClase.class");
/* URLDecoder.decode -> permite quitar el %20*/
String lstrRuta = URLDecoder.decode(lobjurl.toString(), "UTF-8");

/* Se obtiene solo la ruta, se obvia File : */
lstrRuta = lstrRuta.substring(6, lstrRuta.indexOf("WEB-INF") - 1);

return lstrRuta;
} catch (UnsupportedEncodingException ue) {
ue.printStackTrace();
}
return null;
}

public String gpNombrarArchivo() {

FacesContext context = FacesContext.getCurrentInstance();
HttpSession sesion = (HttpSession) context.getExternalContext().getSession(false);

Date ldteFecha = new Date();

//lo guardo con un nombre único
String pstrNombreArchivo = "Grafico-" +sesion.getId()+ldteFecha.toString().hashCode()+ ".jpg";

sesion.setAttribute("graficoJPG", pstrNombreArchivo);

return pstrNombreArchivo;

}

Llamado del jsp:
<%

String lstrRuta = "CarpetaTemporal" + File.separator + request.getSession(false).getAttribute("graficoJPG");
out.print("<div align=\"center\"><img src=\"../" + lstrRuta + "\" width=\"500\" height=\"300\"></div>");

%>

 




Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network