Problemas con JFreeChart

menchok
21 de Agosto del 2008
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.

menchok
21 de Agosto del 2008
Ya he conseguido que me funcione.