SSH+JFreeChart,开启tomcat报异常,求大神赐教!

以下是异常:SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException:  Error creating bean with name 'PiechartAction' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; 
nested exception is java.lang.NoClassDefFoundError:org/jfree/data/general/PieDataset

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:965)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoClassDefFoundError: org/jfree/data/general/PieDataset
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)
at java.lang.Class.getConstructor0(Class.java:2714)
at java.lang.Class.getDeclaredConstructor(Class.java:2002)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:65)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:958)
... 37 more
Caused by: java.lang.ClassNotFoundException: org.jfree.data.general.PieDataset
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
... 43 more


关于JFreeChart的相关jar包有三个:
gnujaxp.jar
jcommon-1.0.17.jar
jfreechart-1.0.14.jar


applicationContext.xml配置如下:
         <bean id="PiechartDAO" class="dao.PiechartDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

<bean id="PiechartService" class="service.PiechartService">
<property name="piechartDao">
<ref bean="PiechartDAO" />
</property>
</bean>

<bean id="PiechartAction" class="action.PiechartAction" >
<property name="piechartService">
<ref bean="PiechartService" />
</property>
</bean>


action里面内容如下:

package action;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.labels.StandardPieToolTipGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.util.Rotation;

import entity.Piechart;

import service.PiechartService;

public class PiechartAction implements ServletRequestAware {
private PiechartService piechartService=null;
private HttpServletRequest request=null;

public String getPiechartExample(){
Piechart piechart = piechartService.getPiechartExample();

//获取数据集
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("JAVA", piechart.getJava());
dataset.setValue("C", piechart.getC());
dataset.setValue(".NET", piechart.getNet());

//创建JFreeChart对象
JFreeChart chart = ChartFactory.createPieChart(piechart.getTitle(), dataset, true, true, false);
//设置标题字体,为了防止中文乱码
chart.setTitle(new TextTitle("公司组织架构统计图",new Font("黑体",Font.ITALIC,22)));

//取得统计图标的第一个图例
LegendTitle legend=chart.getLegend(0);
//修改图例的字体,必须把显示图片设置为ture,否则会包空指针异常
legend.setItemFont(new Font("宋体",Font.BOLD,20));

//取得图表显示对象(与柱状图和折线图不同)
PiePlot plot=(PiePlot) chart.getPlot();
//设置区块标签的字体==为了防止中文乱码:必须设置字体
plot.setLabelFont(new Font("隶书",Font.BOLD,22));
//图形边框颜色
plot.setBaseSectionOutlinePaint(Color.BLUE);
//图形边框粗细
plot.setBaseSectionOutlineStroke(new BasicStroke(0.5f));
//设置饼状图的绘制方向,可以按顺时针方向绘制,也可以按逆时针方向绘制
plot.setDirection(Rotation.ANTICLOCKWISE);//逆时针,Rotation.CLOCKWISE顺时针
//设置绘制角度(图形旋转角度)
plot.setStartAngle(70);
//设置突出显示的数据块
//plot.setExplodePercent(1, 0.5D);
//plot.setExplodePercent("One", 0.5D);
//扇区分离显示,对3D图不起效
plot.setExplodePercent(dataset.getKey(0), 0.1d);
//分类标签与图的连接线颜色
plot.setLabelLinkPaint(Color.BLUE);
//分类标签边框颜色
plot.setLabelOutlinePaint(Color.black);
//分类标签阴影颜色
plot.setLabelShadowPaint(Color.RED);
//指定分类饼的颜色
plot.setSectionPaint(1, Color.BLACK);
//饼状图标签显示百分比 :自定义,{0}表示选项,{1}表示数值,{2}表示所占比例,小数点后两位
plot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}:{1}\r\n{2}",NumberFormat.getNumberInstance(),new DecimalFormat("0.00%")));

//图例显示百分比
plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={2}"));
//指定显示的拼图为:圆形(true),还是椭圆形(false)
plot.setCircular(true);
//没有数据的时候显示的内容
plot.setNoDataMessage("没有可用的数据...");

//设置鼠标悬停提示
plot.setToolTipGenerator(new StandardPieToolTipGenerator());
//设置热点链接
//plot.setURLGenerator(new StandardPieURLGenerator("detail.jsp"));

drawToOut(chart);
return "success";
}

//生成饼状图形
public static void drawToOut(JFreeChart chart){
FileOutputStream fos=null;
try {
fos = new FileOutputStream("d://1.jpg");
ChartUtilities.writeChartAsJPEG(fos, chart, 1400, 800);

} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(fos!=null){
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("成功");
}

public void setRequest(HttpServletRequest request) {
this.request = request;
}

public void setServletRequest(HttpServletRequest request) {
this.setRequest(request);
}

public PiechartService getPiechartService() {
return piechartService;
}

public void setPiechartService(PiechartService piechartService) {
this.piechartService = piechartService;
}

public HttpServletRequest getRequest() {
return request;
}
}

问题描述完了。
像这种ClassNotFound类似的错误貌似是包的问题,但是搞了半天还是没有找到解决方案。
各位大神有什么高见吗?



PS:我将与JFreeChart有关的代码注释掉的话,tomcat就能正常启动。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值