VaCin图表中的NoClassDefFoundError:com / google / gson / TypeAdapterFactory

时间:2014-02-14 05:01:04

标签: java charts gson noclassdeffounderror vaadin7

我只是想用vaadin图表实现简单的条形图。 就像下面排名的教程一样,我写了代码。

链接:http://demo.vaadin.com/charts/#BasicBar

但是当我尝试扩展时,由于没有这样的类'AbstractVaadinChartExample',我只是将该方法设为公共静态。

以下是我的所作所为。

  1. 我下载了vaadin chart 1.1.5.jar
  2. 我把它放在我的vaadin 7项目中
  3. 我没有编辑原始代码,只是在最后添加了一行。 layout.addComponent(BasicBar.getChart());
  4. 我的BasicBar.java与上层链接相同,但我没有扩展任何内容,并将getChart()方法变为'public static'。
  5. 现在我收到'NoClassDefFoundError:com / google / gson / TypeAdapterFactory'错误: - (
  6. 我无法理解,因为我对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

3 个答案:

答案 0 :(得分:0)

当项目未引用您的JAR时,NoClassDefFoundError将到达。随着您所做的次要代码更改,我认为它不会导致NoClassDefFoundError。

您能否提供更多信息:

  1. 是简单的Java项目还是Web应用程序?

  2. 您已经添加了JAR,但是您是否在eclipse中使用“Build classpath”明确地将其放入类路径中?

  3. 如果没有您的细微更改,程序是否会成功运行?

答案 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。