Я просто пытаюсь реализовать простую гистограмму с диаграммой vaadin. так же, как учебник ниже ранга, я написал код.
Ссылка: http://demo.vaadin.com/charts/#BasicBar
Но когда я пытаюсь расширить, поскольку такого класса «AbstractVaadinChartExample» не было, я просто делаю этот метод общедоступным статическим.
ниже то, что я сделал.
- Я скачал диаграмму vaadin 1.1.5.jar
- Я поместил это в свой проект vaadin 7
- Я не редактировал исходный код, кроме добавления строки в последний. layout.addComponent(BasicBar.getChart());
- Мой BasicBar.java точно такой же, как и эта верхняя ссылка, но я ничего не расширял и сделал метод getChart() «публичным статическим».
- Теперь я получил ошибку «NoClassDefFoundError: com/google/gson/TypeAdapterFactory» :-(
Не могу понять, потому что я ничего не делал с 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;
}
}
Как я могу это исправить? Спасибо