2010-04-18 5 views
1

J'essaie de générer des graphiques en utilisant JFreeChart. J'ai ajouté un enregistrement dans web.xml, installé la bibliothèque jfreechart. Servlet compilé Ci-dessous le code de servlet a montré:Générer JFreeChart dans le servlet

import java.io.IOException; 
import java.io.OutputStream; 
import java.io.File; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.awt.Color; 

import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.general.DefaultPieDataset; 



public class diagram extends HttpServlet { 

public void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 

doTestPieChart(request,response); 
    } 

    protected void doTestPieChart(HttpServletRequest request, 
           HttpServletResponse response) 
     throws IOException, ServletException 
    { 
     OutputStream out = response.getOutputStream(); 

     try 
     { 
     DefaultPieDataset dataset = new DefaultPieDataset(); 

     dataset.setValue("Graphic Novels", 192); 
     dataset.setValue("History", 125); 
     dataset.setValue("Military Fiction", 236); 
     dataset.setValue("Mystery", 547); 
     dataset.setValue("Performing Arts", 210); 
     dataset.setValue("Science, Non-Fiction", 70); 
     dataset.setValue("Science Fiction", 989); 

     JFreeChart chart = ChartFactory.createPieChart(
      "Books by Type", 
      dataset,   
      true,    
      false,    
      false    
     ); 
     chart.setBackgroundPaint(Color.white); 

     response.setContentType("image/png"); 
     ChartUtilities.writeChartAsPNG(out, chart, 400, 300); 
    /* 
    ServletContext sc = getServletContext(); 
    String filename = sc.getRealPath("pie.png"); 
    File file = new File(filename); 
    ChartUtilities.saveChartAsPNG(file,chart,400,300); 
    */ 

     } 
     catch (Exception e) 
     { 
     System.out.println(e.toString()); 
     } 
     finally 
     { 
     out.close(); 
     } 

    } 


} 

Quand je lance le servlet, erreur a montré:

HTTP Status 500 - 

type Exception report 

message 

description The server encountered an internal error() that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Error instantiating servlet class diagram 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
java.lang.Thread.run(Thread.java:619) 

root cause 

java.lang.NoClassDefFoundError: org/jfree/data/general/PieDataset 
java.lang.Class.getDeclaredConstructors0(Native Method) 
java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 
java.lang.Class.getConstructor0(Class.java:2699) 
java.lang.Class.newInstance0(Class.java:326) 
java.lang.Class.newInstance(Class.java:308) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
java.lang.Thread.run(Thread.java:619) 

root cause 

java.lang.ClassNotFoundException: org.jfree.data.general.PieDataset 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329) 
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316) 
java.lang.Class.getDeclaredConstructors0(Native Method) 
java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 
java.lang.Class.getConstructor0(Class.java:2699) 
java.lang.Class.newInstance0(Class.java:326) 
java.lang.Class.newInstance(Class.java:308) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
java.lang.Thread.run(Thread.java:619) 

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.24 logs. 

Aidez-moi à résoudre un problème. et où est le problème?

Répondre

2

Assurez-vous que vous avez pot JFreeChart dans votre répertoire

WEB-INF/lib 

ou votre fichier de déploiement WAR.