我只是想用vaadin图表实现简单的条形图。 就像下面排名的教程一样,我写了代码。
链接:http://demo.vaadin.com/charts/#BasicBar
但是当我尝试扩展时,由于没有这样的类'AbstractVaadinChartExample',我只是将该方法设为公共静态。
以下是我的所作所为。
我无法理解,因为我对gson没有做任何事情。
我的代码如下:
package org.owls.chart;
import java.util.ArrayList;
import java.util.List;
import com.vaadin.addon.charts.Chart;
import com.vaadin.addon.charts.model.ChartType;
import com.vaadin.addon.charts.model.Configuration;
import com.vaadin.addon.charts.model.HorizontalAlign;
import com.vaadin.addon.charts.model.Labels;
import com.vaadin.addon.charts.model.LayoutDirection;
import com.vaadin.addon.charts.model.Legend;
import com.vaadin.addon.charts.model.ListSeries;
import com.vaadin.addon.charts.model.PlotOptionsBar;
import com.vaadin.addon.charts.model.Title;
import com.vaadin.addon.charts.model.Tooltip;
import com.vaadin.addon.charts.model.VerticalAlign;
import com.vaadin.addon.charts.model.XAxis;
import com.vaadin.addon.charts.model.YAxis;
import com.vaadin.ui.Component;
public class BasicBar {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Component getChart () {
Chart chart = new Chart(ChartType.BAR);
Configuration config = chart.getConfiguration();
config.setTitle("basic chart");
config.setSubTitle("2014.02.14");
//X
XAxis xAxis = new XAxis();
xAxis.setCategories("A", "B", "C", "D", "E");
xAxis.setTitle("xTitle");
config.addxAxis(xAxis);
//Y
YAxis yAxis = new YAxis();
yAxis.setMin(0);
Title tile = new Title("y title");
tile.setVerticalAlign(VerticalAlign.HIGH);
yAxis.setTitle(tile);
config.addyAxis(yAxis);
Tooltip toolTip = new Tooltip();
//???
toolTip.setFormatter("this.series.name : + ': ' + this.y +' millions'");
config.setTooltip(toolTip);
//plot
PlotOptionsBar plot = new PlotOptionsBar();
//????
plot.setDataLabels(new Labels(true));
config.setPlotOptions(plot);
Legend legend = new Legend();
legend.setLayout(LayoutDirection.VERTICAL);
legend.setHorizontalAlign(HorizontalAlign.RIGHT);
legend.setVerticalAlign(VerticalAlign.TOP);
legend.setX(-100);
legend.setY(100);
legend.setFloating(true);
legend.setBorderWidth(1);
legend.setBackgroundColor("#FFFFFF");
legend.setShadow(true);
config.setLegend(legend);
config.disableCredits();
List series = new ArrayList();
series.add(new ListSeries("Year 1800", 107, 31, 635, 203, 2));
series.add(new ListSeries("Year 1900", 133, 156, 947, 408, 6));
series.add(new ListSeries("Year 2008", 973, 914, 4054, 732, 34));
config.setSeries(series);
chart.drawChart(config);
return chart;
}
}
我该如何解决? 谢谢:D
答案 0 :(得分:0)
当项目未引用您的JAR时,NoClassDefFoundError将到达。随着您所做的次要代码更改,我认为它不会导致NoClassDefFoundError。
您能否提供更多信息:
是简单的Java项目还是Web应用程序?
您已经添加了JAR,但是您是否在eclipse中使用“Build classpath”明确地将其放入类路径中?
如果没有您的细微更改,程序是否会成功运行?
答案 1 :(得分:0)
听起来你需要这个Jar加载:http://www.java2s.com/Code/Jar/g/Downloadgson221jar.htm
Stripe设置指南中未提及,如果其他人遇到此问题,安装此Jar会为我解决此错误消息。
答案 2 :(得分:0)
Vaadin是基于GWT的,因此我怀疑您正在运行开发服务器。
如果是这样,请将gson路径添加到-Xbootclasspath
-Xbootclasspath/p:/somepath/libraries-master/appengine-java-sdk-1.9.48/lib/override/appengine-dev-jdk-overrides.jar:/p:/somepath/war/WEB-INF/lib/gson-2.2.4.jar
在Eclipse中,查看运行配置 - >参数 - > VM参数
如果您通过Ant或其他脚本启动开发服务器,则必须在那里调整-Xbootclasspath。