问题描述
java.lang.ClassCastException: org.jfree.chart.JFreeChart cannot be cast to java.lang.String请大家帮我看一下,很急的,谢谢各位了。代码如下:package com.sinews.insurance.action;import java.awt.Color;import java.awt.Font;import java.io.IOException;import org.jfree.chart.ChartFactory;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.CategoryLabelPositions;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer3D;import org.jfree.chart.renderer.category.CategoryItemRenderer;import org.jfree.chart.renderer.category.LineAndShapeRenderer;import org.jfree.chart.title.LegendTitle;import org.jfree.chart.title.TextTitle;import org.jfree.data.category.CategoryDataset;import org.jfree.data.general.DatasetUtilities;import org.jfree.data.general.DefaultPieDataset;import org.jfree.ui.RectangleInsets;import com.opensymphony.xwork2.ActionSupport;public class JFreeChartCateGoryAction extends ActionSupport{private JFreeChart chart;public JFreeChart getChart() {return chart;}public void setChart(JFreeChart chart) {this.chart = chart;}/*******************************************折线图**************************************************/public JFreeChart getXYChartAction(){System.out.println("折线图getXYChartAction");double[][] data=new double[][] {{676,766,223,540,126},{222,540,456,678,345},{512,412,621,426,532} };String[] rowKyes={"苹果","香蕉","李子"};String[] columnKyes={"北京","上海","广州","城都","深圳"};CategoryDataset dataset=getBarData(data,rowKyes,columnKyes);createTimeXYChar("折线图","x轴","y轴",dataset,"");return chart;}public CategoryDataset getBarData(double[][] data,String[] rowKyes,String[] columnKeys){return DatasetUtilities.createCategoryDataset(rowKyes, columnKeys,data);}public void createTimeXYChar(String chartTitle,String x,String y,CategoryDataset xyDataset,String chartName){chart=ChartFactory.createLineChart(chartTitle, x, y, xyDataset, PlotOrientation.VERTICAL, true, true, false);Font font00=new Font("宋体",Font.BOLD,18);LegendTitle legend=chart.getLegend();legend.setItemFont(font00);//设置注释字体chart.setTextAntiAlias(false);//设置图标题的字体重新设置titleFont font=new Font("隶书",Font.BOLD,25);TextTitle title=new TextTitle(chartTitle);title.setFont(font);chart.setTitle(title);CategoryPlot categoryplot=(CategoryPlot)chart.getPlot();//x轴分类轴网格是否可见categoryplot.setDomainGridlinesVisible(true);//y轴数据轴网格是否可见categoryplot.setRangeGridlinesVisible(true);categoryplot.setRangeGridlinePaint(Color.pink);//虚线色彩categoryplot.setDomainGridlinePaint(Color.pink);//虚线色彩categoryplot.setBackgroundPaint(Color.white);//设置轴和板之间的距离categoryplot.setAxisOffset(new RectangleInsets(0D,0D,0D,0D));CategoryAxis domainAxis=categoryplot.getDomainAxis();domainAxis.setLabelFont(new Font("宋体",Font.BOLD,18));//轴标题domainAxis.setTickLabelFont(new Font("宋体",Font.ITALIC,15));//轴数值domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);//横轴上的//设置距离图片左端距离domainAxis.setLowerMargin(0.1);//设置距离图片右端距离domainAxis.setUpperMargin(0.1);NumberAxis numberaxis=(NumberAxis)categoryplot.getRangeAxis();numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());numberaxis.setAutoRangeIncludesZero(true);numberaxis.setLabelFont(new Font("宋体",Font.BOLD,18));//设置最高的一个值与图片顶端的距离numberaxis.setUpperMargin(0.15);//设置最低的一个值与图片低端的距离//numberaxis.setLowerMargin(0.15);//获得rendererLineAndShapeRenderer lineandshaperrenderer=(LineAndShapeRenderer)categoryplot.getRenderer();lineandshaperrenderer.setBaseShapesVisible(true);//series点(即数据点)可见lineandshaperrenderer.setBaseLinesVisible(true);//series点(即数据点)间有连线可见//现设折点数据lineandshaperrenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());lineandshaperrenderer.setBaseItemLabelsVisible(true);}/*******************************************折线图结束**************************************************/}struts2配置如下:<package name="" extends="jfreechart-default"><action name="getXYChartAction" method="getXYChartAction" class="com.sinews.insurance.action.JFreeChartCateGoryAction"> <result type="chart"> <param name="width">600</param> <param name="height">450</param></result> </action> </package>一直抱上面的那个错,不知道怎么回事。 问题补充:java.lang.ClassCastException: org.jfree.chart.JFreeChart cannot be cast to java.lang.Stringcom.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:273)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:235)com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:141)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:248)org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:124)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:170)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:170)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:104)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:84)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:208)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:88)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:130)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:137)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:130)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:229)com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:477)org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:467)org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:97)2xl 写道
解决方案
但是从你贴出的异常信息看,也不是来自类JFreeChartCateGoryAction的呀
解决方案二:
补充一下:应该是说type="chart"在配置文件中定义了没有,如下边这样:<result-types> <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type></result-types>
解决方案三:
<result type="chart"> 这里你是在哪配置的?
解决方案四:
发下完整的异常信息,上边的太简单了。